是否有任何可能的方法来使对象和具有相同名称和相同类定义的对象数组?

时间:2012-04-08 16:11:22

标签: c# c#-4.0

我正在从动态更新的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
的定义 有没有办法做到这一点?

3 个答案:

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