C#学习笔记-类型转换

来源:互联网 发布:元数据驱动架构 编辑:程序博客网 时间:2024/04/28 22:51

一、正确操作字符串

string str = "string"+9;

string str ="string"+9.tostring();

这两个的区别,第一个发生了装箱行为,第二个是直接通过操作内存来完成从int到string的转换,效率要比装箱高很多,所以在使用其他值引用类型到字符串的转换时,要尽量避免使用“+”操作符,而要采用tostring()完成;

使用string.Format()来进行字符串的格式化,是在内部使用string.Builder来进行格式化:

string a="a";string b="b";string c="c";string.Format("{0}{1}{2}",a,b,c);

二、正确使用类型转换

1、基元类型转换。

基元类型指的是编译器直接支持的数据类型,即直接映射到FCL中的类型,如int、double、object、float、char、decimal、bool等;

用户自定义类型也可以通过重载转换运算符来实现转换:

 public override string ToString()        {            return value.ToString();        }

不过一般用户自定义类型转换要从面向对象的角度考虑,如继承、实现等

2、使用类型内置的方法进行转换。

如Parse、TryParse(字符串转换为整形)、Todouble、Tostring、ToDataTime,FCL中一般常用的类型转换都已自带。

3、使用帮助类提供的方法。

Systerm.Convert提供了类型之间的转换方法,不仅 可以将一个基元类型转换为其他基元类型,如ToChar、ToBool等,还可以将任何自定义类型转换为任何基元类型,只要自定义类型继承IConvertible接口即可,同时继承该IConvertible接口就必须实现它的其他方法,如果不支持某个方法,应该抛出throw new InvalidCastException("Ip-to-Boolean Convert is NotSupported");而不是throw new NotImplementedException();

4、使用CRL支持的类型转换。

实际上就是基类和子类之间的转换;子类向基类支持隐式转换,基类向子类必须显示转换。
理解强制类型转换:

secondType = (SecondType)fristTpye;

这表示两种可能情况:1、两个类型之间依靠类型转换符进行转换;

2、FristType是SecondType的基类;并且只能是这两种中的一个,不可能同时存在。

0 0