日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > C# >内容正文

C#

C# 基础知识 (五).变量类型和字符串处理

發(fā)布時(shí)間:2024/5/28 C# 65 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C# 基础知识 (五).变量类型和字符串处理 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

??????? 這篇文章是閱讀《C#入門(mén)經(jīng)典(Beginning C#)》書(shū)籍里面的內(nèi)容,作者Karli Watson.主要包括自己缺乏的一些C#基礎(chǔ)知識(shí)和在線筆記使用,文章主要包括C#簡(jiǎn)單變量類(lèi)型和復(fù)雜變量類(lèi)型、命名規(guī)則、隱式轉(zhuǎn)換和顯示轉(zhuǎn)換、變量字符串處理等內(nèi)容,都是非常基礎(chǔ)的知識(shí),希望對(duì)初學(xué)者有所幫助.

一.?C#簡(jiǎn)單變量類(lèi)型和命名規(guī)則

??????? 簡(jiǎn)單類(lèi)型組成應(yīng)用程序中基本構(gòu)件的類(lèi)型,其中主要有以下類(lèi)型:

整數(shù)類(lèi)型
?????????????????????

sbyte(-128~127之間整數(shù)) byte(0~255之間整數(shù))?short(-32768~32767之間整數(shù))
ushort(0~65535
之間整數(shù))?
int(4字節(jié),1Byte=8bit)? uint(0~2^32-1之間整數(shù))
long(
別名System.Int64)?
ulong(別名System.UInt64,uunsigned縮寫(xiě),非負(fù)數(shù))

浮點(diǎn)數(shù)類(lèi)型

float double(+/- m*2^e) decimal(+/- m*10^e)

3種簡(jiǎn)單類(lèi)型

char(一個(gè)Unicode字符,存儲(chǔ)0~65535之間整數(shù))
bool(布爾值true/false)? string(一組字符)

??????? C#變量命名規(guī)則:變量名的第一個(gè)字符必須是字母、下劃線(_)或@,其后的字符可以是字母、下劃線或數(shù)字.
??????? 命名約定:以前用Hungarian表示法-在變量名上加上小寫(xiě)形式的前綴,表示其類(lèi)型,如int型iAge.但由于C# .NET Framework類(lèi)型復(fù)雜,最好根據(jù)變量的作用命名它們,目前.NET Framework命名約定PascalCase和camelCase.在名稱(chēng)中使用大小寫(xiě)表示它們的用途,由多個(gè)單詞組成.
??????? PascalCase
指定名稱(chēng)中每個(gè)單詞除第一個(gè)字母大寫(xiě)外,其余小寫(xiě).如Age/LastName/WinterOfDiscontent.
??????? camelCase第一個(gè)單詞以小寫(xiě)字母開(kāi)頭,如age、firstName、timeOfDeath.Microsoft建議對(duì)于簡(jiǎn)單變量使用camelCase規(guī)則,較高級(jí)命名使用PascalCase.建議大家在命名時(shí)盡量使用這種方法,方便他人閱讀.

??????? 注意:下劃線字符分割變量名中單詞如month_time已經(jīng)被淘汰.
????????逐字指定字符串:兩個(gè)雙引號(hào)之間的所有字符都包含在字符串中,包括行末字符和轉(zhuǎn)義字符.唯一例外是雙引號(hào)字符的轉(zhuǎn)義必須指定,以免結(jié)束字符串,可以在該字符串前加@.
??????? 逐字指定的字符串在文件名中非常有用(反斜杠字符\),前面做過(guò)的工程都涉及磁盤(pán)目錄、圖片路徑,可見(jiàn)其用途極為廣泛.即:@"C:\Temp\MyDir\MyFile.doc"="C:\\Temp\\MyDir\\MyFile.doc".
???????
位運(yùn)算包括&按位與 |按位或 ^按位異或 ~取反 <<左移 >>右移.

二.?隱式轉(zhuǎn)換和顯示轉(zhuǎn)換

??????? 隱式轉(zhuǎn)換:從類(lèi)型A到類(lèi)型B的轉(zhuǎn)換可以在所有情況下進(jìn)行,執(zhí)行轉(zhuǎn)換的規(guī)則簡(jiǎn)單,可以讓編譯器執(zhí)行轉(zhuǎn)換.
??????? 顯示轉(zhuǎn)換:從類(lèi)型A到類(lèi)型B的轉(zhuǎn)換只能在某些情況下進(jìn)行,轉(zhuǎn)換的規(guī)則比較復(fù)雜,應(yīng)進(jìn)行某種類(lèi)型的處理.

??????? 其中隱式轉(zhuǎn)換規(guī)則是類(lèi)型A取值范圍完全包含在類(lèi)型B的取值范圍內(nèi),就可以轉(zhuǎn)換為類(lèi)型B.其中byte可以轉(zhuǎn)換為short/int或float可以轉(zhuǎn)轉(zhuǎn)為double.short類(lèi)型變量可以存儲(chǔ)0~32767而byte可以存儲(chǔ)的最大值255,所以當(dāng)short轉(zhuǎn)換byte時(shí)如果在256~32767就會(huì)出錯(cuò).
??????? 而顯示轉(zhuǎn)換即明確要求編譯器把數(shù)值從一種數(shù)據(jù)類(lèi)型轉(zhuǎn)換為另一種數(shù)據(jù)類(lèi)型,其中編寫(xiě)代碼的格式隨著轉(zhuǎn)換方法而異.相當(dāng)于"我已經(jīng)知道你對(duì)在這么做提出了警告,但我將對(duì)其后果負(fù)責(zé)".如:
??????? byte n; short m = 7; n = m;
??????? 它將會(huì)報(bào)錯(cuò):無(wú)法將類(lèi)型"short"隱式轉(zhuǎn)換為"byte",存在一個(gè)顯示轉(zhuǎn)換(是否缺少?gòu)?qiáng)制轉(zhuǎn)換?)
??????? 此時(shí)需要顯示轉(zhuǎn)換,最簡(jiǎn)單的方法是把short變量強(qiáng)制轉(zhuǎn)換為byte,如n=(byte)m;但需要注意m大于255時(shí)會(huì)產(chǎn)生數(shù)據(jù)丟失.
??????? C#提供表達(dá)式溢出檢查上下文.使用checked和unchecked關(guān)鍵字,如n=checked((byte)m); 當(dāng)m=281時(shí)會(huì)報(bào)錯(cuò)信息"算術(shù)運(yùn)算導(dǎo)致溢出".
??????? PS:配置程序表達(dá)式都包含checked,右擊"解決方案資源管理器"項(xiàng)目->屬性->生成->高級(jí)(Advanced)->選中"檢查運(yùn)算上溢/下溢",如下圖所示:

?


??????? 另一種顯示轉(zhuǎn)換方法是使用Convert命令進(jìn)行顯示轉(zhuǎn)換,要轉(zhuǎn)換為int使用Convert.ToInt32(); 轉(zhuǎn)換為字符串使用Convert.ToString(boolVal);結(jié)果輸出"true/false".這種我在使用字符串和設(shè)置編碼格式時(shí)經(jīng)常使用.

三. 復(fù)雜的變量類(lèi)型:枚舉 結(jié)構(gòu) 數(shù)組??

??????? 復(fù)雜的變量類(lèi)型主要包括:
??????? 枚舉:變量類(lèi)型,用戶定義一組可能的離散值,這些值用人們理解的方式使用
??????? 結(jié)構(gòu):合成的變量類(lèi)型,由用戶定義的一組其他變量類(lèi)型組成
??????? 數(shù)組:包含一種類(lèi)型的多個(gè)變量,可以以索引方式訪問(wèn)各個(gè)數(shù)值?
???
??????? 1.枚舉
??????? 有時(shí)希望變量提出的是一個(gè)固定集合中的值,如week類(lèi)型存儲(chǔ)星期7天,month存儲(chǔ)12個(gè)月份.枚舉允許定義一個(gè)類(lèi)型,其中包含提供的限定值集合中的一個(gè)值,如枚舉類(lèi)型orientation可以存儲(chǔ)north/south/east/west值.枚舉默認(rèn)類(lèi)型是int,默認(rèn)情況每個(gè)值都會(huì)根據(jù)定義的順序(從0開(kāi)始),自動(dòng)賦值給對(duì)應(yīng)的基本類(lèi)型.沒(méi)有賦值的任何值都會(huì)自動(dòng)獲得一個(gè)初始值,該值比上一個(gè)明確聲明的值大1.舉例:

namespace test {//定義枚舉類(lèi)型并指定每個(gè)枚舉的實(shí)際值enum orientation : byte{north = 1,south = 2,east =3,west = 4}class Program{ static void Main(string[] args){//聲明枚舉類(lèi)型變量orientation myDirection = orientation.south; Console.WriteLine("myDirection = {0} {1}",myDirection,(int)myDirection);Console.ReadKey(); }} }

??????? PS:該程序輸出結(jié)果為:?"myDirection = south 2",實(shí)際項(xiàng)目中枚舉應(yīng)用如在制作畫(huà)圖軟件時(shí),自定義枚舉類(lèi)型UserSelect變量,然后判斷其if (iUserSelect == (int)UserSelect.SELECT)鼠標(biāo)選擇的是線段、矩形、選中狀態(tài)等.而C語(yǔ)言中經(jīng)??疾烀杜e類(lèi)型的賦值、占用空間地址與結(jié)構(gòu)進(jìn)行對(duì)比等題目.
??????? 2.結(jié)構(gòu)
??????? struct,structure縮寫(xiě).結(jié)構(gòu)就是由幾個(gè)數(shù)據(jù)組成的數(shù)據(jù)結(jié)構(gòu),這些數(shù)據(jù)可能具有不同的類(lèi)型.根據(jù)這個(gè)結(jié)構(gòu)可以定義自己的變量類(lèi)型.如學(xué)生信息(學(xué)號(hào)+姓名)、存儲(chǔ)一段路程(方向+距離),假定東南西北四個(gè)方向.通常方法是定義:orientation myDirection; double myDistance;但是如果存儲(chǔ)多個(gè)路徑時(shí)定義變量比較麻煩,所以引入結(jié)構(gòu)struct.主要包括結(jié)構(gòu)體數(shù)據(jù)成員,其格式"<accessibility> <type> <name>;修飾 類(lèi)型 名稱(chēng)".舉例:

namespace test {//定義枚舉類(lèi)型并指定每個(gè)枚舉的實(shí)際值enum orientation : byte{north,south,east,west}//定義結(jié)構(gòu)類(lèi)型struct route{public orientation direction; //方向public double distance; //距離}class Program{ static void Main(string[] args){//定義結(jié)構(gòu)類(lèi)型變量及賦值route myRoute;myRoute.direction = orientation.west;myRoute.distance = 3.14;Console.WriteLine("direction = {0} distance = {1}", myRoute.direction, myRoute.distance);Console.ReadKey(); }} }

??????? 運(yùn)行結(jié)果為"direction = west distance = 3.14".
??????? 3.數(shù)組
??????? 數(shù)組是一個(gè)變量的索引列表,存儲(chǔ)在數(shù)組類(lèi)型的變量中,存儲(chǔ)類(lèi)型相同的多個(gè)值.與C略有不同,C#聲明數(shù)組的方法是:<baseType>[] <name>?如:int[] myArray;

????????初始化的兩種方法:
??????? int[] myArray = {1,2,3,4,5};或者int[] myArray = new int[5];
???????
其中new顯示初始化數(shù)組大小為5,數(shù)組元素賦默認(rèn)值0.如Console.WriteLine("aArray = {0} , bArray = {1}",aArray[3],bArray[2]);輸出數(shù)字"aArray =?4 , bArray = 0".數(shù)組索引從0開(kāi)始,定義Name[5]即索引為0-4.多維數(shù)組的聲明如double[,] length = new double[3,4]表示3*4的數(shù)組.這些基礎(chǔ)知識(shí)就不在強(qiáng)調(diào)了,應(yīng)該大家都會(huì).

四. 字符串處理

??????? <string>.ToCharArray()獲取一個(gè)可寫(xiě)的char數(shù)組,該字符數(shù)組中存放當(dāng)前字符串的所有字符,將字符串復(fù)制到指定字符數(shù)組中.如:string str = "This is a string"; char[] chs = str.ToCharArray();
??????? <string>.Length獲取元素的個(gè)數(shù),給出字符串的字符數(shù).
??????? <string>.ToLower|<string>.ToUpper()把字符串轉(zhuǎn)換為小寫(xiě)形式和大寫(xiě)形式,在比較或賦值時(shí)使用,如:if(useResponse.ToLower() == "yes").
??????? <string>.Trim()刪除輸入字符串的空白字符,注意是去掉首尾空格.如:char[] chs = {' ','e','s'}; string str = "??? This is a Yeeees? "; str = str.Trim(chs);輸出"This is a Y".從字符串的前面或后面刪除所有空格、字母e和s 而中間的空格\e\s不變.
??????? <string>.TrimStart()|<string>.TrimEnd()把字符串前面或后面的空格去掉.

???????<string>.PadLeft()|<string>.PadRight()字符串的左邊或右邊添加空格,使字符串達(dá)到指定長(zhǎng)度.該方法用于列中對(duì)齊字符串,數(shù)據(jù)庫(kù)查詢顯示信息時(shí)常用.如:?str = "abcdefg"; str = str.PadLeft(10);?//輸出"?? abcdefg" str = str.PadRight(10,'X'); //輸出"abcdefgXXX".
??????? <string>.Split()把string字符串轉(zhuǎn)換為string數(shù)組,在指定位置分隔開(kāi)并刪除分隔符,下面是使用空格分隔string str = "This is a string!" char[] chs = {' '}; string[] words; words = str.Split(chs); //輸出This is a string!四個(gè)單詞
??????? PS:還有很多字符串處理函數(shù)作者不在續(xù)寫(xiě),用戶可以鍵入代碼第一個(gè)字符時(shí),IDE幫助用戶提供輸入關(guān)鍵字、變量名、類(lèi)型名等,即IntelliSense功能(智能感應(yīng)).而且查詢用法和關(guān)鍵字時(shí)按住Ctrl鍵可以繼續(xù)閱讀被擋住部分代碼(變透明).這個(gè)Ctrl我也是叢書(shū)中知道.
??????? 總結(jié):
該文章主要是關(guān)于C#基礎(chǔ)知識(shí)的變量類(lèi)型和字符串處理,其中主要參照書(shū)籍《C#入門(mén)經(jīng)典》,推薦大家學(xué)習(xí)C#的入門(mén)書(shū)籍.寫(xiě)這種文章感覺(jué)有時(shí)候自己想得挺多的,可能也有點(diǎn)水,但問(wèn)心無(wú)愧.其實(shí)我也更愿意寫(xiě)些實(shí)際項(xiàng)目的東西或一些項(xiàng)目經(jīng)驗(yàn)、項(xiàng)目真正的技術(shù)文章,但由于自己的閱歷不夠、項(xiàng)目能力還一般,還需要繼續(xù)學(xué)習(xí)實(shí)踐,而這種基礎(chǔ)文章更多是在線筆記!有時(shí)寫(xiě)起來(lái)有點(diǎn)淡淡的傷感.希望以后自己能沉下心去真正去學(xué)些東西、做些東西,但現(xiàn)在總是有點(diǎn)迷茫,感覺(jué)很多東西需要學(xué)習(xí)又有些乏力,不管如何,先腳踏實(shí)地的學(xué)些東西,沉浸到代碼中去,慢慢尋找自己的人生路吧!自己給自己鼓勵(lì),如果有錯(cuò)誤或不足之處還請(qǐng)海涵!有建議或教導(dǎo)也可以提出來(lái)分享~

?(By:Eastmount 2014-8-23 夜12點(diǎn) 原創(chuàng)CSDN?http://blog.csdn.net/eastmount/)

總結(jié)

以上是生活随笔為你收集整理的C# 基础知识 (五).变量类型和字符串处理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。