C#类型转换 (非原创)
生活随笔
收集整理的這篇文章主要介紹了
C#类型转换 (非原创)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1.?強制轉換 E.g.: (int)table1.rows["id"][0];這種轉換在編程中不建議使用,是一種裝箱拆箱的過程,就是說被轉換類型本身必須是將要轉換成的那種類型,否則必然出錯; E.g.: object objTest = new NewType(); NewType newValue = (NewType)objTest; 2.????? Convert 該類基本支持所以類型之間的轉換。但也要求轉換類型本身必須是將要轉換成的那種類型,否則也會出錯; E.g.: Convert.toInt32(table1.rows["id"][0]); 3.????? DataType.Parse() Note:上述3種方法是不安全的,需要用try-catch語句來進行保護。 4.????? DataType.TryParse(),如果轉換不成功,會直接給目標變量賦初值。 E.g.: decimal p1; decimal.TryParse("{}", out p1); 5.????? As E.g.: object objTest = new NewType(); NewType newValue = objTest as NewType; 對于as操作符來說,它不會做過的轉換操作,當需要轉換對象的類型屬于轉換目標類型或者轉換目標類型的派生類型的時候,那么此轉換操作才能成功,而且并不產生新的對象。因此用as來進行類型轉換使安全的。為什么用as操作符進行類型轉換的效率要高于老式的類型轉換的,因為用as操作符進行轉換就如前面所說的,首先判斷當前對象的類型,當類型滿足要求后才進行轉換。而傳統的類型轉換方式,是用當前對象直接去轉換,而且為了保護轉換成功,要加上try-catch,這就決定了它的效率不會高于as操作符的效率。 要注意的時候,不管用傳統方式,還是用as操作符進行類型轉換之后,在使用之前,需要進行判斷轉換是否成功,如下: if( newValue!= null ) { //Work with the object named "newValue" } Note:使用as操作符有如下幾點限制。 (1)不用在類型之間進行類型轉化,即如下編寫就會出現編譯錯誤。 NewType newValue = new NewType(); NewType1 newValue = newValue as NewType1; (2)不能應用在值類型數據,即不能如下寫(也會出現編譯錯誤)。 object objTest = 11; int nValue = objTest as int; 對于第一點所提的,可以用傳統的類型轉換方式來完成,但是光用如下的方式,是不能正確完成。 NewTypeOne newTestOne = new NewTypeOne(); NewTypeTwo newTestTwo = (NewTypeTwo)newTestOne; 但是光如上寫是不能完成的,要想使如上的操作能正確完成,在原有類型中增加類型轉換操作符函數,即需要完成類似如下的代碼。 public class NewTypeOne { public static explicit operator NewTypeTwo( NewTypeOne objTest ) { //Convert object into new type } } 對于第二點所提的,在C#中可以使用is操作符,再加上老式的類型轉換操作,就可以安全完成轉換,那么要完成如上操作,正確的寫法如下。 object objTest = 11; if( objTest is int ) { int nValue = (int)objTest; }
轉載于:https://www.cnblogs.com/GeneralXU/archive/2008/12/09/1351171.html
總結
以上是生活随笔為你收集整理的C#类型转换 (非原创)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 字符串验证
- 下一篇: vs2005之主题与皮肤的学习