访问以其类型c#命名的变量
本文关键字:变量 类型 访问 | 更新日期: 2023-09-27 18:17:10
在以下示例代码中:
public class Foo
{
public struct Data
{
public int val;
}
public Data Data
void method(Foo foo)
{
foo.Data.val = 10;
}
}
前面的示例导致以下错误:
错误3 ` ` Foo。Data'和'Foo '。数据"
知道如何修复这个错误而不必重命名成员变量吗?由于我通过对象实例访问"数据",那么编译器选择"数据"成员变量而不是"数据"类型对我来说听起来合乎逻辑。
出现这种情况时,还会出现第二个更明显的错误,因为它们都具有相同的全限定名称& & &;它们都是Foo
的成员
如果你把这个结构移到类的外面,它会工作的很好
除了将嵌套结构移到外部(或者通过重命名属性,您明确地排除了该属性)之外,您根本无法做到这一点:
public struct Data
{
public int val;
}
public class Foo
{
public Data Data;
void method(Foo foo)
{
foo.Data.val = 10;
}
}
如果你想让struct Data
和Foo
更明显地相关,你可以把它们都放在一个嵌套的命名空间中:
namespace FooThings
{
public struct Data
{
public int val;
}
public class Foo
{
public Data Data;
void method(Foo foo)
{
foo.Data.val = 10;
}
}
}
注意:您的OP的实际错误是"The type 'Demo.Foo' already contains a definition for 'Data'"
(修复丢失的";"后)。
change
public Data Data;
public Data data;
和
void method(Foo foo)
{
foo.data.val = 10;
}