永发信息网

C#用父类型来声明的子类型。怎么获取它的实际类型(子类型),并根据获得的类型,强制转换为该类型?

答案:2  悬赏:40  手机版
解决时间 2021-03-05 19:32
  • 提问者网友:树红树绿
  • 2021-03-04 23:12
例如 动物父类型 animal,有子类型:鸡chicken、鸭duck、狗dog。用animal声明了一中动物,但是不知道是哪一种。怎么知道它的类型,并将此动物对象转换为该种动物类型??
最佳答案
  • 五星知识达人网友:旧脸谱
  • 2021-03-05 00:13
办法很多,我这里给你提供两种办法
第一种办法,通过is关键字来判断
animal d=new duck();
if(d is duck)
{
MessageBox.Show(“d是duck类型”);
}
else if (d is dog)
{
MessageBox.Show(“d是dog类型”);
}
else if(d is chicken)
{
MessageBox.Show(“d是chicken类型”);
}

第二种办法 通过getType()函数来判断
GetType()函数是object下的函数。所以你的类只要是从object继承过来的,就可以
animal d=new duck();
if(d.GetType().Name=="duck")
{
MessageBox.Show(“d是duck类型”);
}
else if (d.GetType().Name=="dog")
{
MessageBox.Show(“d是dog类型”);
}
else if(d.GetType().Name=="chicken")
{
MessageBox.Show(“d是chicken类型”);
}
全部回答
  • 1楼网友:由着我着迷
  • 2021-03-05 00:40
1.任何一门编程语言均有相关数据类型。c#也不例外,其基本数据类型有int,short,long,float,double,string等。数据类型之间可以相互转换。不过转换过程要注意小类型能转换成大类型,但大类型一般不能转换成小类型。如int型可以转换成float型,但float型不一定可以转换成int型,至少这在c,c++是这样,但在c#中明显有了改变,似乎微软公司也允许这样的形式存在了。例如: double dbl_num=12345678910.456; int k = (int) dbl_num ;//此处运用了强制转换 以上代码如果在c,c++中强制转换成int型,肯定会出错,但现在在c#中却不会出错了,不过转换后的值往往是溢出值,是不精通的。这点需要大家注意。 2.采用另一种方式转换类型,如int.parse(),int32.parse()等采用方法来转换. 如string str=”100〃; int i=int.parse(str); 注意:str除掉引号的类型必须和*.parse的类型一致。如果将100改成100.78,即变成float类型,运行时将会报错”输入字符串的格式不正确.” 3.采用后缀式转换,如k.tostring(),一般运用于字符串或日期等其它类型 int i=100; string s=i.tostring(); 4.采用convert类来实现转换,该类基本支持所以类型之间的转换 string str=”100〃; int i = convert.toint16(str); 注意:str除掉引号的类型必须和convert.*的类型一致。如果将100改成100.78,即变成float类型,运行时将会报错”输入字符串的格式不正确.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯