我有2类B和D.我必须用4个元素2 B型和2型D.如何做到这一点建立一个数组?
B o1 = new B();
D o2 = new D();
B o3 = new B();
D o4 = new D();
该数组应该是这样的:
array[0] = o1; array[1] = o2; array[2] = o3; array[3] = o4;
我有2类B和D.我必须用4个元素2 B型和2型D.如何做到这一点建立一个数组?
B o1 = new B();
D o2 = new D();
B o3 = new B();
D o4 = new D();
该数组应该是这样的:
array[0] = o1; array[1] = o2; array[2] = o3; array[3] = o4;
如果有一个以上的对象之外没有共同的基类,你只需要:
object[] array = new object[4];
array[0] = o1;
// etc
或在单杆:
object[] array = { o1, o2, o3, o4 };
使用特定成员B或d,你需要投当你从阵列,例如检索的值
B b = (B) array[0];
b.SomeMethodDeclaredOnB();
如果B和D有常用的方法,可以声明那些其中两个类实现的接口,并改变阵列的类型:
IBD[] array = new IBD[4];
array[0] = o1;
...
array[0].SomeMethodDeclaredInIBD();
要么:
IBD[] array = { o1, o2, o3, o4 };
...
array[0].SomeMethodDeclaredInIBD();
最后,为了解决这个问题:
我是新来的C#。 我不喜欢它,但我一定要学它。 在PHP中更容易10000次;
我敢肯定,如果我试图用PHP我发现在完全相反的方向相同的经历。 不要认为C#是比PHP“糟糕”或“困难” - 它只是不同的,你一定会发现很难用你不熟悉的莫过于你的“舒适区”语言的语言。
或使用阵列object[] array
对象的
以上OOP计算策略:
公共类B:IHolder {}
公共类d:IHolder {}
IHolder[]
阵列IHolders
我是新来的C#。 我不喜欢它,但我一定要学它。 在PHP中更容易10000次;
你忽略了最后一句的一部分:“犯错误”。 强typedness都有其长处。
可以让类B和d从一个共同的基类或接口等这样的继承:
interface ISomeInterface
{
string CommonProperty { get; }
}
class B : ISomeInterface
{
public string CommonProperty { get; }
}
class D : ISomeInterface
{
public string CommonProperty { get; }
}
ISomeInterface[] array = new ISomeInterface[]
{
o1,
o2,
o3,
o4
}