类型转换总结

1、将任意类型转化成字符串类型

       ToString();

2、将字符串类型转换成任意类型

       Parse()或者TryParse(),重点说一下TryParse(),先看实例,了解TryParse()的用法

//使用TryParse()进行类型转换
string tryStr = "10aa";
int result;
bool b = int.TryParse(tryStr, out result);
if (b)
{
    Console.WriteLine("类型转换成功");
    Console.WriteLine(result);
}
else
{
    Console.WriteLine("转换失败");
    Console.WriteLine(result);
}
Console.ReadKey();

        如果运行这段代码,返回值是:

            转换失败

           0

        如果这个地方用Parse()代替,如实例:

string Str = "10aa";
Console.WriteLine(int.Parse(Str));//如果不能转换则会报错
        通过编译,代码会报错,通过比较,我们很清楚的看出,TryParse()比Parse()有明显的优势,在转换是否成功时,做出不一样的处理。

       补充:将字符串类型转换成枚举类型

        我们先声明一个枚举类型

//不是继承了byte类型,而是限制枚举的值属于byte的范围
public enum UserState : byte
{
    Qme,
    Online = 253,
    Hide,
    Busy
}
        接下看字符串"Qme"是怎么转换成枚举的:

//先说明一下GetType()与typeof()的区别。假如
//Int32 i = new Int32(); 
//i.GetType()返回值是Int32的类型,但是无法使用typeof(i),因为i是一个变量,
//如果要使用typeof(),则只能:typeof(Int32),返回的同样是Int32的类型。
//将字符串类型转化成枚举类型。
string qme = "Qme";
UserState state = (UserState)Enum.Parse(typeof(UserState), qme);
Console.WriteLine((int)state);
Console.ReadKey();
        返回值为0

3、将任意类型转化成任意类型

       Convert();

4、类与类之间转换

#region 类型转换一(用一对()实现转换)
Person p = new Chinese();
p.Name = "Lrh";
if (p is Chinese) //判断一个对象是否属于某个类型
{
    Chinese chin = (Chinese)p;
    Console.WriteLine(chin.Name);
}
else
{
    Console.WriteLine("强制类型转换失败");
}
Console.ReadKey();
#endregion

#region 类型转换二(用as实现转换)
Person p = new Person();

//此种转换写法会异常
//Chinese ch = (Chinese)p;

//用as进行转换时,如果转换失败也不会报异常,只是会返回Null
Chinese ch = p as Chinese;//推荐使用as类型转换
Console.WriteLine(ch.China);
Console.ReadKey();
#endregion

5、隐式类型转换与显示类型转换(简单实例)

Chinese ch = new Chinese();
ch.China = "中国";
//把子类类型转换成父类类型,发生了隐式转换
Person p = ch;

//把父类类型转化成子类类型,需要显示类型转换
Chinese c = (Chinese)p;
Console.WriteLine(c.China);
Console.ReadKey();


补充Person类和Chinese类之间的关系

class Person
    {
        public string Name
        {
            get;
            set;
        }
    }
    class Chinese:Person
    {
        public string China
        {
            get;
            set;
        }
    }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值