访问以其类型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 '。数据"

知道如何修复这个错误而不必重命名成员变量吗?由于我通过对象实例访问"数据",那么编译器选择"数据"成员变量而不是"数据"类型对我来说听起来合乎逻辑。

访问以其类型c#命名的变量

出现这种情况时,还会出现第二个更明显的错误,因为它们都具有相同的全限定名称& & &;它们都是Foo的成员

如果你把这个结构移到类的外面,它会工作的很好

除了将嵌套结构移到外部(或者通过重命名属性,您明确地排除了该属性)之外,您根本无法做到这一点:

public struct Data
{
    public int val;
}
public class Foo
{
    public Data Data;
    void method(Foo foo)
    {
        foo.Data.val = 10;
    }
}

如果你想让struct DataFoo更明显地相关,你可以把它们都放在一个嵌套的命名空间中:

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;
}