Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有没有可能让一个对象和一组对象具有相同的名称和相同的类定义?_C#_C# 4.0 - Fatal编程技术网

C# 有没有可能让一个对象和一组对象具有相同的名称和相同的类定义?

C# 有没有可能让一个对象和一组对象具有相同的名称和相同的类定义?,c#,c#-4.0,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的定义 有什么可能的方法吗?出现错误的原因是C#不允许使用相同名称的两种

我正在从动态更新的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的定义

有什么可能的方法吗?

出现错误的原因是C#不允许使用相同名称的两种类型的变量

你不能申报

SomeMethod()
{
    int x = 0;
    string x = "something";
}
如果我是你,我可能会做以下事情

 class Y
{
   public List<X> listOfX{get; set;}
}
class X
{
    public int a { get; set; }
}
Y类
{
公共列表listOfX{get;set;}
}
X类
{
公共int a{get;set;}
}
你可以有一份清单。如果只有一个元素,那么就有一个大小为1的元素列表。

C#规范规定类型的成员必须具有唯一的名称(我认为这是为了防止成员引用不明确)。具体见:

由于命名空间或类型的每个成员都必须具有唯一的名称,因此命名空间或类型的完全限定名称始终是唯一的


如果需要名为x的属性一次返回一个类型为x的值,另一次返回一个类型为x的数组,则可以使用dynamic关键字

class Y
{
    public dynamic x { get { return IfMonday() ? new X() : new X[100]; set; }
}

这到底是什么意思?obj.x决心做什么?谢谢,但这对我没有帮助。在c#中是否有任何方法可以检查变量是对象还是数组??这样我就可以用它来代替IfMonday()。。。。类似于php的bool is_array()?您的意思是bool b=(x是T[])?