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类型”);
}
第一种办法,通过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类型,运行时将会报错”输入字符串的格式不正确.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯