C# 有没有可能让一个对象和一组对象具有相同的名称和相同的类定义?
我正在从动态更新的json中检索数据。它有时包含一个X类型的对象,有时包含一个X类型的对象数组。我需要一个父类Y,可以在上述任何情况下工作。而且对象名:x保持不变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#不允许使用相同名称的两种
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[])?