国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計 > 正文

一起學(xué)習(xí)《C#高級編程》1--類型的安全性

2019-11-17 02:42:09
字體:
供稿:網(wǎng)友

一起學(xué)習(xí)《C#高級編程》1--類型的安全性

  感覺寫隨筆第一天就遇到了困難,感覺好費時間啊,回宿舍就得8點多,然后只能看一點書。之后寫隨筆,首先得回憶,然后組織,最后打字。還有就是宿舍迎來的斷網(wǎng)的日子,特別不方便,只能第二天去公司發(fā)。本人目前是.net開發(fā)實習(xí)生,之前零零散散學(xué)了些.net知識,如今打算好好鞏固下C#,看了《C#高級編程》后感覺知識龐大,還有好些分支沒掌握,雖然不知道有些東西值不值得學(xué)習(xí),還是先學(xué)著吧。

好了,步入正題:從《C#高級編程》第7章運算符和類型強制轉(zhuǎn)換開始

類型的安全性

類型轉(zhuǎn)換

首先看一段代碼:

Byte value1=10;

Byte value2=20;

Byte total=value1+value2;

Console.WriteLine(total);

初看似乎沒有錯誤,但此時VS會彈出下面一段錯誤提示:

  錯誤 : 無法將類型“int”隱式轉(zhuǎn)換為“byte”。存在一個顯式轉(zhuǎn)換(是否缺少強制轉(zhuǎn)換?)

這是因為byte只能為8位,兩個byte類型相加很容易得到超出8位大小的數(shù)值,這體現(xiàn)了C#類型的強安全性;

這時,把Byte total=value1+value2;

改為Byte value3 = (byte)(value1 + value2); //顯示轉(zhuǎn)換

或者Int value3 = value1 + value2; //隱士轉(zhuǎn)換

以上就用到了兩種類型轉(zhuǎn)換,隱式轉(zhuǎn)換顯式轉(zhuǎn)換

隱式轉(zhuǎn)換:

就是從較小的數(shù)據(jù)類型可以轉(zhuǎn)換為較大的數(shù)據(jù)類型

注意:

無符號的變量可以轉(zhuǎn)換為有符號的變量,只要無符號的變量值在有符號的變量值內(nèi)即可

·要類型轉(zhuǎn)換中的可空類型(類型符后面帶“?”,可空類型就是允許為Null的類型):

·可空類型轉(zhuǎn)換規(guī)則遵循非可空類型的轉(zhuǎn)換規(guī)則,即較小類型向較大類型轉(zhuǎn)換

·非可空類型可以隱式轉(zhuǎn)換為可空類型,但可空類型不能隱式轉(zhuǎn)換為非可空類型。這是因為可空類型值允許為null,但非可空類型不允許為null。

顯式轉(zhuǎn)換:

就是強制轉(zhuǎn)換,要說的就是數(shù)值溢出的問題

例如:

long val=3000000000;

int i=(int)val;

算術(shù)溢出,可以用unchecked和checked檢測

默認(rèn)情況下是unchecked,即對數(shù)值溢出不檢測

使用checked,會迫使運行時拋出異常:

long val=3000000000;

int i=checked((int)val);

或者checked用{}包住需要驗證溢出的語句

Checked

{

int i=checked((int)val);

}

后面還會用異常 try}{} catch{}來引入異常處理

之前提到的,可空類型轉(zhuǎn)換為非可空類型,必須用到顯示轉(zhuǎn)換。如int?轉(zhuǎn)換為int。這是因為可空類型允許為null。

如果可空類型為null,轉(zhuǎn)換為非可空類型,就會拋出異常。

int? a=null;

int b=(int)a; //將拋出異常

如果需要在數(shù)字和字符串之間轉(zhuǎn)換,可以試用.Net類庫中提供的方法:ToString();

int i=10;

string s=i.ToString();

關(guān)于類型轉(zhuǎn)換,.Net還提供了兩種安全帶轉(zhuǎn)換方法:Parse()和Convert方法。

例如:

string someString = "22";

int value1 = Int32.Parse(someString);

int value2 = Convert.ToInt32(someString);

還提到了一點,就是裝箱拆箱

裝箱,就是把值類型轉(zhuǎn)換為引用類型Object類型。而拆箱就是把Object類型重新轉(zhuǎn)換為值類型。

例:

int myInt=10;

object myObject=myInt; //裝箱,值類型都可以轉(zhuǎn)換為引用Object類型

int myInt2=(int)myObject; //拆箱,裝箱的相反過程,需要強制轉(zhuǎn)換

裝箱,拆箱可用于:比如一個方法需要引用類型參數(shù),此時把值類型裝箱成為引用類型,之后可拆箱為值類型。

23:37,今天先寫到這了,由于看書的時間本身就比較晚,之后寫隨筆的進(jìn)度比較慢,遠(yuǎn)遠(yuǎn)落后于看書的進(jìn)度。留下了點小尾巴,是關(guān)于 比較對象之間的相等性 的。

明天接著寫運算符的重載。

  以后會爭取每天寫一點C#學(xué)習(xí)的內(nèi)容分享,也希望大家一起努力,把C#發(fā)揚光大,哈哈。歡迎多多指教!


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 昆山市| 芮城县| 拜泉县| 武邑县| 墨脱县| 西昌市| 栾川县| 慈利县| 马公市| 高清| 文化| 获嘉县| 米易县| 涪陵区| 泾阳县| 贵定县| 平度市| 陈巴尔虎旗| 桂平市| 平原县| 门头沟区| 龙山县| 康乐县| 兴城市| 望江县| 四川省| 桃江县| 古丈县| 韶山市| 乐亭县| 阳高县| 襄垣县| 桑日县| 吴忠市| 隆子县| 满洲里市| 固原市| 芷江| 固原市| 聂拉木县| 鹤庆县|