情况是这样的:public class Fruits
{...}public class apple:Fruits
{
}public class orange:Fruits
{
}
...//省略若干
public class kiwi:Fruits
{
}现在我有一个array:Fruits[] fruits=new Fruits[10];
fruits[0]=new apple();
fruits[1]=new orange();
...
fruits[9]=new ...()
然后,假设我不知道到底有多少种水果,但我需要把fruits里各个元素再转换回具体的水果:
就是说,怎么让程序自己判断fruits[0]是什么,然后转换类型希望的效果是:
第一步,获取fruits[0]的类型,假设为XXX型
然后 XXX temp=(XXX)fruits[0];
请教这个过程该怎么实现呢?
求高手指点!!
谢谢!!!
{...}public class apple:Fruits
{
}public class orange:Fruits
{
}
...//省略若干
public class kiwi:Fruits
{
}现在我有一个array:Fruits[] fruits=new Fruits[10];
fruits[0]=new apple();
fruits[1]=new orange();
...
fruits[9]=new ...()
然后,假设我不知道到底有多少种水果,但我需要把fruits里各个元素再转换回具体的水果:
就是说,怎么让程序自己判断fruits[0]是什么,然后转换类型希望的效果是:
第一步,获取fruits[0]的类型,假设为XXX型
然后 XXX temp=(XXX)fruits[0];
请教这个过程该怎么实现呢?
求高手指点!!
谢谢!!!
解决方案 »
- c#中加载log4net.dll时遇到的一个诡异问题
- C#里有没有控件可以上面显示图标下面显示文字?
- iesuper.exe是用什么打的包?安装文件的图标很好看
- 有没有在窗体上画线和方框框的控件?现在我需要在窗体上画一些表格.用程序画太麻烦啦,而且改动起来也麻烦.想找一些像VB中能在窗体上画线和
- (求一句话)怎么把CHECKEDLISTBOX里的第 i 行 在代码里自动形成勾选???急
- 急!急!急! 大神请进!!!先谢了!!
- Microsoft c#Windows程序设计
- 在sql server 怎样实现纪录级的权限控制? 高手请进!!!
- 为什么在win2k中运行正常,在win98中在出错
- c#和存储过程???急
- 并发性
- 【SOS】C# 读取 硬盘 S.M.A.R.T 的详细信息!
如果你所指的"不知道到底有多少种水果"指Fruits有多少个子类也不知?
这个就可能比较麻烦了,需要用反射using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;namespace ClassAndChildClass
{
class Program
{
static void Main(string[] args)
{
Fruits[] fs = new Fruits[2];
fs[0] = new apple();
fs[1] = new orange(); //List<object> lst =new List<object>();
foreach (Fruits f in fs)
{
String a = f.GetType().Name;
switch (a)
{
case "apple":
apple tempa = (apple)f;
tempa.print();
break;
case "orange":
orange tempo = (orange)f;
tempo.print();
break;
default:
break;
}
}
Console.ReadKey();
}
} public class Fruits
{
public Fruits()
{
Console.WriteLine("Fruits");
}
public void print()
{
// do something
}
} public class apple : Fruits
{
public apple()
{
Console.WriteLine("apple");
}
} public class orange : Fruits
{
public orange()
{
Console.WriteLine("orange");
}
}
}