【发布时间】:2013-07-20 22:51:21
【问题描述】:
在对象类型上使用开关真的是调用对类对象的存储引用的通用函数的主要方式吗?它不必是“对象”值类型。
using System;
public class MainClass { public void Main() { print "hello world"; } }
public class SubClassOne : MainClass { }
public class SubClassTwo : MainClass { }
public class Storer
{
public void Main() {
object[] objects = new object[2];
objects[0] = new SubClassOne();
objects[1] = new SubClassTwo();
for(i=0;i<2;i++)
{
switch(objects[i].GetType().ToString())
{
case: "SubClassOne":
SubClassOne subclass = objects[i];
subclass.Main();
break;
case: "SubClassTwo":
SubClassTwo subclass = objects[i];
subclass.Main(); //Could probably call after the switch
break;
}
}
}
}
注意:代码未解析,因此可能存在严重错误。
【问题讨论】:
-
为什么不使用
MainClass[] objects = new MainClass[2]? -
当它真正存储 MainClass 时,我可以向它添加子类吗?没试过。
-
SubClassTwo扩展了MainClass,因此您可以将其用作MainClass而无需强制转换。使用objects[0].Main()有效 -
如果我的问题是正确的,为什么不试试这个 - objects[i].Main() 你能解释一下为什么你需要一个开关吗?
-
"Using objects[0].Main() is valid" 嗯...我记得builder说值类型'object'没有这样的方法,所以我添加了强制转换。