【发布时间】:2013-06-06 14:57:48
【问题描述】:
在以下示例代码中:
public class Foo
{
public struct Data
{
public int val;
}
public Data Data
void method(Foo foo)
{
foo.Data.val = 10;
}
}
前面的例子导致如下错误:
错误 3 'Foo.Data' 和 'Foo.Data' 之间的歧义
知道如何在不重命名成员变量的情况下修复此错误吗?由于我通过对象实例访问“数据”,因此编译器选择“数据”成员变量而不是“数据”类型对我来说听起来合乎逻辑。
【问题讨论】:
-
这不是您唯一的问题。
The type 'UserQuery.Foo' already contains a definition for 'Data' -
您发布的程序没有产生您描述的错误。
-
@EricLippert:当我测试它时,它确实如此,尽管我需要在字段声明之后添加终止
;。 -
错误真的是
"The type 'Demo.Foo' already contains a definition for 'Data'" -
@EricLippert:进一步考虑,是的,它可以。
class X { class Y { public static int z; } int z; X Y; }那么Y.z可以是Y中的静态字段,也可以是X字段的实例字段。
标签: c# variables naming ambiguity