我正在从动态更新的json中检索数据。它在某个时候包含一个X类型的对象,在其他时候包含一个X类型对象的数组。我需要一个可以在上述任何情况下工作的父类Y.对象名称:x保持不变。
class Y
{
public X x { get; set; }
public X[] x { get; set; }
}
class X
{
public int a { get; set; }
}
这显示错误:类型Y已包含x
的定义
有没有办法做到这一点?
答案 0 :(得分:0)
您收到错误的原因是C#不允许两个具有相同名称的变量。
你无法申报
SomeMethod()
{
int x = 0;
string x = "something";
}
如果我是你,我可能会做以下事情。
class Y
{
public List<X> listOfX{get; set;}
}
class X
{
public int a { get; set; }
}
你可以有一个清单。如果只有一个元素,则有一个大小为1的元素列表。
答案 1 :(得分:0)
C#规范说一个类型的成员必须有一个唯一的名称(我假设是为了防止模糊的成员引用)。请参阅http://msdn.microsoft.com/en-us/library/aa691137(v=vs.71).aspx,具体来说:
因为命名空间或类型的每个成员都必须具有唯一名称,所以命名空间或类型的完全限定名称始终是唯一的。
答案 2 :(得分:0)
如果需要一个名为x的属性,一次返回一个X类型的值,另一个返回X的数组,则可以使用dynamic关键字。
class Y
{
public dynamic x { get { return IfMonday() ? new X() : new X[100]; set; }
}