gpt4 book ai didi

c# - 为什么 C# 成员名称不能与封闭类型名称相同?

转载 作者:IT王子 更新时间:2023-10-29 03:49:01 33 4
gpt4 key购买 nike

在 C# 中,以下代码无法编译:

class Foo {

public string Foo;

}

问题是:为什么?

更确切地说,我知道这不会编译,因为(我引用):

member names cannot be the same as their enclosing type

好的,好的。我明白了,我不会再这样做了,我保证。

但我真的不明白为什么编译器拒绝接受任何与封闭类型同名的字段。阻止我这样做的潜在问题是什么?

最佳答案

严格来说,这是 C# 强加的限制,很可能是为了语法的方便。构造函数有一个方法体,但它在 IL 中的成员条目表示为“.ctor”,并且它的元数据与普通方法略有不同(在反射类中,ConstructorInfo 派生自 MethodBase,而不是 MethodInfo。)我不相信有一个 .NET 限制阻止创建与外部类型同名的成员(甚至方法),尽管我还没有尝试过。


我很好奇,所以我确认这不是 .NET 限制。在 VB 中创建以下类:

Public Class Class1
Public Sub Class1()

End Sub
End Class

在 C# 中,您将其引用为:

var class1 = new Class1();
class1.Class1();

关于c# - 为什么 C# 成员名称不能与封闭类型名称相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4074055/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com