c#基础语言编程-常用函数
2015-03-18 12:00
387 查看
类型转换Convert
Convert考虑数据意义的转换。 Convert是一个加工、改造的过程。在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找。
Tryparse和Parse
Int.TryParse为强制转为字符串,如不能转化成功,则返回false,比如
String str= “1243sdf”;
parse中转化不成功的话,则溢出,所以tryparse比较安全。
Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;
比较:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。
Convert.ToInt32 参数为 “” 时,抛出异常;
int.Parse 参数为 “” 时,抛出异常。
Convert.ToInt32 可以转换的类型较多;
ToString(),Convert.ToString()由别的对象得到 string 对象,它们间的区别只表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个 null。
is 和as
这个在对基类和派生类判断是很有好处。
equals 和==
两者针对类/数组时时比较在栈中地址是否一样,两者是没有区别的,但是在string类型时,对equals和==进行重载,是比较字符串内容是否一致。
如何判断两个对象是否同一个?
在object中有个判断函数,用于判断。
比如:
string str = “adsdf”;//str是字符串常量
string str = str1;//str是字符串对象。
对于字符串常量,就是字符串暂存池。
针对字符串常量的暂存池特性,对于相同的字符串常量,每次使用的时候并不会宠幸创建一个内存来存储,而是第一次创建的时候,讲字符串作为键,将字符串的地址作为值来存储,下次用的时候先去键值中查找,如果有则直接返回场次创建字符串地址。这个特性依赖于字符串的不可变性。
所以在程序中字符串常量要小,在程序退出后,才会释放掉内存。
由于字符串的不可变性,因为每次创建对象时消耗时间,和内存。字符串拼接时造成内存浪费和时间消耗。
解决方法就是stringbuilder。
什么样的对象才会被回收?
没有变量引用的对象。即为null的对象。
什么时间回收?
不确定,当程序需呀重新内存的时候开始执行回收。
Convert考虑数据意义的转换。 Convert是一个加工、改造的过程。在使用Convert的转换过程中不会返回异常,当遇到类型转换的不知道的时候,用Convert找找。
Tryparse和Parse
Int.TryParse为强制转为字符串,如不能转化成功,则返回false,比如
String str= “1243sdf”;
parse中转化不成功的话,则溢出,所以tryparse比较安全。
//把任意的字符串转换为数字类型 string msg = "12345abcd"; //int n = int.Parse(msg); int n; bool b = int.TryParse(msg, out n); if (b) { Console.WriteLine(n); } else { Console.WriteLine("转换失败!"); }
Convert.ToInt32()是一种类容转换;但它不限于将字符串转为int类型,还可以是其它类型的参数;
比较:
Convert.ToInt32 参数为 null 时,返回 0;
int.Parse 参数为 null 时,抛出异常。
Convert.ToInt32 参数为 “” 时,抛出异常;
int.Parse 参数为 “” 时,抛出异常。
Convert.ToInt32 可以转换的类型较多;
ToString(),Convert.ToString()由别的对象得到 string 对象,它们间的区别只表现在要转换的对象为 null 时,如果 obj 为 null,调用 obj.ToString 方法会导致 NullReferenceException 异常,调用 Convert.ToString 不会抛出异常而返回一个 null。
is 和as
这个在对基类和派生类判断是很有好处。
//person是基类 ,Ding周人是派生于person的类 Person p = new DingZhouRen(); DingZhouRen dzr = p as DingZhouRen; if (dzr != null) { Console.WriteLine("ok"); } else { Console.WriteLine("类型转换失败!"); }
equals 和==
两者针对类/数组时时比较在栈中地址是否一样,两者是没有区别的,但是在string类型时,对equals和==进行重载,是比较字符串内容是否一致。
如何判断两个对象是否同一个?
在object中有个判断函数,用于判断。
字符串常量
字符串常量和字符串对象是不一样的概念。比如:
string str = “adsdf”;//str是字符串常量
string str = str1;//str是字符串对象。
对于字符串常量,就是字符串暂存池。
针对字符串常量的暂存池特性,对于相同的字符串常量,每次使用的时候并不会宠幸创建一个内存来存储,而是第一次创建的时候,讲字符串作为键,将字符串的地址作为值来存储,下次用的时候先去键值中查找,如果有则直接返回场次创建字符串地址。这个特性依赖于字符串的不可变性。
所以在程序中字符串常量要小,在程序退出后,才会释放掉内存。
由于字符串的不可变性,因为每次创建对象时消耗时间,和内存。字符串拼接时造成内存浪费和时间消耗。
解决方法就是stringbuilder。
垃圾回收
在clr机制中提供垃圾回收功能,只回收内存中的垃圾,也就是托管堆中的内存资源,不回收其他资源。值类型不需要垃圾回收,当执行完后立即就释放掉。什么样的对象才会被回收?
没有变量引用的对象。即为null的对象。
什么时间回收?
不确定,当程序需呀重新内存的时候开始执行回收。
相关文章推荐
- c#基础语言编程-常用函数
- c#编程基础知识——VS2010常用技巧,键盘常用键
- c#语言基础编程-转义符
- c#基础语言编程-装箱和拆箱
- c#基础语言编程-序列化
- c#基础语言编程-编码
- C语言基础——字符串及常用函数
- c#基础语言编程-异常处理
- c#基础语言编程-Path和Directory
- c#基础语言编程-Path和Directory
- c#基础语言编程-序列化
- R语言入门基础教程:常用运算函数
- c#基础语言编程-多态
- c#语言基础编程—string
- c#基础语言编程-集合
- 使用C#创建webservice及三种调用方式 (ASP.NETweb编程常用到的27个函数集)
- c#语言基础编程-转义符
- c#基础语言编程-按值类型和引用类型传递参数
- c#基础语言编程-多态
- c#基础语言编程-文件流操作