gpt4 book ai didi

c# - List<> 在不同的类中有不同的行为

转载 作者:行者123 更新时间:2023-11-30 18:59:16 30 4
gpt4 key购买 nike

我写了一小段代码,但发现了一些惊人的东西。我有一个类(class)名称 Students 并且在那个 calss 中声明了一个 List<> 像这样的变量名称 Students(与类(class)名称相同)

  Class Students
{
private String Name;
private int Age;
public Students(){}

List<Students> Students = new List<Students>();

...
}

这里编译时错误是

'Students': member names can not be the same as their enclosing type

但是如果我在其他类中声明相同的列表......就像

        Class Students
{
private String Name;
private int Age;
public Students(){}
...
}


Class Program
{
....
List<Students> Students = new List<Students>();
Students.Add(new Students("Deb","B++"));
Students.Add(new Students("DDD", "A++"));
............
}

这很好用。我的问题是,为什么?我们如何在其他类而不是在同一个类中创建自定义变量作为类名?任何详细的答案都会很好,因为我想获得这方面的知识。

最佳答案

错误信息中提到了答案:

'Students': member names can not be the same as their enclosing type

如果您在与成员同名的类中,这只是一个错误。

无论如何,这样命名变量在任何情况下都不是一个好主意。他们不应该被大写。

编辑:这是一个可能会引起歧义的示例:

class A
{
public void Foo() { }
}

class B
{
private A B = new A();

static void Foo() { }

void Bar()
{
B.Foo(); // what am I calling here?
}
}

编辑 2:搜索了一下我发现了一个非常相似的问题:Why C# member names can't be the same as the enclosing type name?并且一致认为这是 C# 的限制(没有明确解释原因)。 VB.NET 似乎允许这种情况发生。

关于c# - List<> 在不同的类中有不同的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12050248/

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