ITjob .NET視頻教程之C#教材-c#基礎2_第1頁
ITjob .NET視頻教程之C#教材-c#基礎2_第2頁
ITjob .NET視頻教程之C#教材-c#基礎2_第3頁
ITjob .NET視頻教程之C#教材-c#基礎2_第4頁
ITjob .NET視頻教程之C#教材-c#基礎2_第5頁
已閱讀5頁,還剩44頁未讀 繼續免費閱讀

付費下載

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第二章C#基礎(二)簡要描述將在這個介紹中講述的一系列主題。首先,我們將了解一下這些年來計算本身是如何演變的。目標枚舉數組命名空間預處理指令C#編程規范枚舉類型枚舉是用戶定義的整數類型,它是一個值類型。在聲明一個枚舉時,要指定該枚舉可以包含的一組可接受的實例值。不僅如此,還可以給值指定易于記憶的名稱。using

System;usingSystem.Collections.Generic;using

System.Text;namespace

ConsoleApplication1{class

Program{public

enum

TimeOfDay{Morning,Afternoon,Evening}static

void

Main(string[]

args){Console.WriteLine("請輸入一天的幾個選項,其中0:Morning,1:Afternoon,2:Evening:");string

aa=Console.ReadLine();//將輸入的數字轉換為枚舉類型

WriteGreeting((TimeOfDay)Convert.ToInt32(aa));}static

void

WriteGreeting(TimeOfDay

timeOfDay){switch

(timeOfDay){case

TimeOfDay.Morning:Console.WriteLine("Good

morning!");Console.ReadLine();break;case

TimeOfDay.Afternoon:Console.WriteLine("Good

afternoon!");Console.ReadLine();break;枚舉類型示例:定義一個枚舉:public

enum

TimeOfDay{Morning,Afternoon,Evening}//我們可以將整數轉換為枚舉類型int

aa=1;Console.WriteLine((TimeOfDay)aa);//也可以實現枚舉類型轉換為整數TimeOfDay

bb=TimeOfDay.Evening;Console.WriteLine((int)bb);備注中的代碼演示了一個整數類型與枚舉類型轉換的例子case

TimeOfDay.Evening:枚舉類型如果需要將一個字符串轉換為枚舉值,我們將enum類的

parse方法:TimeOfDay

time2

=

(TimeOfDay)Enum.Parse(typeof(TimeOfDay),

"afternoon",

true);使用枚舉類型的優勢:枚舉可以使代碼更易于維護,有助于確保給變量指定合法的、期望的值。枚舉使代碼更清晰,允許用描述性的名稱表示整數值,而不是用含義模糊的數來表示。枚舉使代碼更易于鍵入。數組int表示一個整數,而int[]表示一個整型數組用new關鍵字初始化特定大小的數組,方括號中給出大小:int[]

integers

=

new

int[32];所有的數組都是引用類型如:int[]copy=integers;該代碼也只是把變量copy指向同一個數組,而不是創建一個新數組。數組(4)數組從0開始,所以要用下標0引用第一個變量:integers[0]

=

35;同樣,用下標值31引用有32個元素的數組中的最后一個元素:integers[31]=432;(5)可以在聲明數組時不進行初始化,動態地指定其大小。如:int[]integers;integers=new

int[32];可以使用下面的語法查看一個數組包含多少個元素:int

numElements

=

integers.Length;數組注意:C#數組從零開始建立索引,即數組索引從零開始。方括號[]必須緊跟在類型后面,而不是標識符后面。聲明數組

C#支持一維數組、多維數組(矩形數組)等。□聲明不同類型的數組:一維數組:int[]numbers;多維數組:string[,]names;實例化數組□實例化不同類型的數組:一維數組:int[]numbers=new

int[5];多維數組:string[,]

names

=

new

string[5,4];初始數組一維數組int[]

numbers

=

new

int[5]

{1,

2,

3,

4,

5};string[]names=new

string[3]{"Matt","Joanne","Robert"};可省略數組的大小,如下所示:int[]

numbers

=

new

int[]

{1,

2,

3,

4,

5};string[]names=new

string[]{"Matt","Joanne","Robert"};如果提供了初始值設定項,則還可以省略new

運算符,如下所示:

int[]numbers={1,2,3,4,5};string[]

names

=

{"Matt",

"Joanne",

"Robert"};多維數組int[,]

numbers

=

new

int[3,

2]

{

{1,

2},

{3,

4},

{5,

6}

};string[,]siblings=new

string[2,2]{{"Mike","Amy"},{"Mary","Alber可省略數組的大小,如下所示:int[,]

numbers

=

new

int[,]

{

{1,

2},

{3,

4},

{5,

6}

};string[,]siblings=new

string[,]{{"Mike","Amy"},{"Mary","Albert"如果提供了初始值設定項,則還可以省略new

運算符,如下所示:int[,]

numbers

=

{

{1,

2},

{3,

4},

{5,

6}

};string[,]

siblings

=

{

{"Mike",

"Amy"},

{"Mary",

"Albert"}

};訪問數組成員通過索引訪問一維數組int[]

numbers

=

{10,

9,

8,

7,

6,

5,

4,

3,

2,

1,

0};numbers[4]

=

5;通過foreach訪問int[]

numbers

=

{4,

5,

6,

1,

2,

3,

-2,

-1,

0};foreach

(int

i

in

numbers){System.Console.WriteLine(i);}由于有了多維數組,可以使用相同方法來循環訪問元素,例如:

int[,]

numbers=new

int[3,

2]

{{9,

99},

{3,

33},

{5,

55}};foreach(int

i

in

numbers){Console.Write("{0}

",

i);}命名空間命名空間提供了一種組織相關類和其他類型的方式。與文件或組件不同,命名空間是一種邏輯組合,而不是物理組合。所有定義的類都包括在命名空間中。命名空間例如:namespaceCustomerPhoneBookApp{using

System;public

struct

Subscriber{//

Code

for

struct

here...}}命名空間命名空間還可以嵌套:namespaceFirstNameSpace{namespace

SecondNameSpace{namespaceThirdNameSpace{class

NamespaceExample{//

Code

for

the

class

here...}}}}引用的方式為:FirstNameSpace.SecondNameSpace.ThirdNameSpace.

NamespaceExample命名空間用using語句指定命名空間位置如:using

System;using

FirstNameSpace;用絕對路徑引用命名空間可以防止類重復。例如,類NamespaceExample同時存在于FirstNameSpace和SecondNameSpace命名空間中,那么就需要制定全名:using

FirstNameSpace;class

Test{public

static

void

Main(){FristNameSpace.NamespaceExample

nSEx

=

newFristNameSpace.NamespaceExample();//do

something

with

the

nSEx

variable

}}命名空間例如,我們定義兩個命名空間,如下:namespace

namespace1{public

class

aa{}}namespace

namespace2{public

class

aa{}}命名空間這樣引用會報錯的:using

namespace1;using

namespace2;aa

newaa=new

aa();必須這樣引用:Namespace1.aa=new

Namespace1.aa();或者Namespace2.aa=

new

Namespace2.aa();再看Main()方法多個Main()方法是不允許的,因為這個類方法是程序的入口。可以給Main()方法傳送參數前面的例子只介紹了不帶參數的Main()方法。我們可以通過兩種方式給Main()傳遞參數再看Main()方法(1)在調試環境下:再看Main()方法(2)命令行輸出:如:在bin/debug目錄下運行ConsoleApplication1.exe

a

b

c再看Main()方法要從控制臺窗口中讀取一行文本,可以使用Console.ReadLine()方法Console.Write()方法將指定的值寫入控制臺窗口。Console.WriteLine()方法類似,但在輸出結果的最后添加一個換行符。控制臺輸出格式舉例:

int

i=10;int

j=20;Console.WriteLine("{0}

plus

{1}

equals

{2}",

i,

jj);Console.ReadLine();第一個參數是花括號中包含標記的字符串,在這個花括號中,要把后續的參數插入到文本中。每個標記都包含一個基于0的索引,表示列表中參數的序號。控制臺輸出格式舉例:int

i

=

940;int

j

=

73;Console.WriteLine("

{0,4}\n+{1,4}\n––––\n

{j,

i

+

j);Console.ReadLine();可以為值指定寬度,調整文本在該寬度中的位置,正值表示右對齊,負值表示左對齊。為此可以使用格式{n,w},其中n是參數索引,w是寬度值。控制臺輸出格式舉例:decimal

i

=

940.23m;decimal

j

=

73.7m;Console.WriteLine("

{0,9:C2}\n+{1,9:C2}\n

––––––\n

{2,9:C2}"j);還可以格式字符串,應把它放在給出參數個數和字段寬度的標記后面,并用一個冒號把它們分隔開。這里是精度為兩位小數,則使用C2。控制臺輸出格式舉例:double

d

=

0.234;Console.WriteLine("{0:#.00}",

d);如果在符號(#)的位置上沒有字符,就會忽略該符號(#),如果0的位置上有一個字符,就用這個字符代替0,否則就顯示0。控制臺輸出格式字

串C說

明本地貨幣格式DEF十進制格式,把整數轉換為以10為基數的數,如果給定一個精度說明符,就加上前導0科學計數法(指數)格式。精度說明符設置小數位數(默認為6)。格式字符串的大小寫("e"或"E")確定指數符號的大小寫固定點格式,精度說明符設置小數位數,可以為0G普通格式,使用E或F格式取決于哪種格式較簡單N數字格式,用逗號表示千分符,例如32,767.44P百分數格式X16進制格式,精度說明符用于加上前導0什么是C#預處理器指令C#還有許多名為“預處理器指令”的命令。這些命令從來不會轉化為可執行代碼中的命令,但會影響編譯過程的各個方面。預處理器指令的開頭都有符號#。為什么要使用C#預處理器指令?我們想在調試的時候做一些調試輸出斷點,但是項目比較大,代碼比較多,我在正式運行的時候要一行一行刪除,太麻煩了,有沒有簡便的方法。答復:可以,用#define和#undef與#if,#eli#else和#endif來實現吧。注意:#define定義一個符號,#undef刪除前面定義的符號。#define、#undef命令放在c#源碼的開頭,放在聲明要編譯的任何對象的代碼之前。為什么要使用C#預處理器指令?程序舉例:我們做一個加法運算,在用戶輸入兩個值后,將結果輸出。static

string

maths(int

a,

int

b){return

Convert.ToString(a+b);}為什么要使用C#預處理器指令?程序舉例:中間的代碼如下:

int

a,b;Console.WriteLine("請輸入你的第一個值:")a=Convert.ToInt32(Console.ReadLine());Console.WriteLine("請輸入你的第二個值:");b=Convert.ToInt32(Console.ReadLine());Console.WriteLine("這是我們正常的輸出結果,值是"+maths(a,b));Console.ReadLine();為什么要使用C#預處理器指令?程序舉例:現在我們在開始的地方加入:#define

DEBUG中間加入:#if

DEBUGConsole.WriteLine("但是我們在這里想看看剛剛我輸入的值,原來是"+a);#endif為什么要使用C#預處理器指令?程序舉例:或許我們會加入很多調試語句,但是當我不想調試了,我就用#undef作廢它,同樣的,#undef

DEBUG也要放在程序行的最上面。為什么要使用C#預處理器指令?我做了一個方法,別人拿去用了,但是我想提醒他,這個方法是有限制的。我可以用#warning“要注意這個方法是很久之前寫的了,現在我又寫了新的方法替代它了,在另外一個文件夾里"當然我們如果想廢除此方法,但是還保留代碼,我們可以使用:#error會影響編譯器,一般會在編譯器中自動報出錯誤,然后立即退出編譯。為什么要使用C#預處理器指令?有的時候代碼真的很多啊,我們用什么方法?

用#region和#endregion來將它們隱藏起來。這個是大家使用最多,常用來代碼分塊,在一個很長的cs文件中,這樣做可以使代碼更清晰。例如:#region一個加法方法static

string

maths(int

a,

int

b){return

Convert.ToString(a+b);}#endregion為什么要使用C#預處理器指令?我們出錯時,編輯器往往提醒我們出錯的行號,但是我們可以改變這個行號!用#line指令如果我們想恢復就用#line

default好像這個指令用處不是很大,至少我還沒有知道在哪個地方使用它比較合適。為什么要使用C#預處理器指令?有些錯誤,我們根本不想讓編輯器去報錯,我們知道任何錯誤都有錯誤號的,只要我們知道這個錯誤號,我們就可以用#pragma

warning

disable

169去禁止它或許這個指令我們很久都不會用到,但是我想這個指令可能是有用的。插入的知識:關于XML注釋///

<summary>///這是一個用于加法的方法,注意,只能用于整數運算///

</summary>///<param

name="a">這是第一個參數</param>///<param

name="b">這是第二個參數</param>///<returns>返回一個計算結果</returns>public

static

string

maths(int

a,int

b){return

Convert.ToString(a

+

b);}C#編程規則做為一名優秀的程序員,作為一名領導手下程序員的項目經理,c#編程規范就非常重要了,我們要在平時的練習中養成良好的編程習慣。用于標識符的規則標識符(值類型、引用類型)都要區分大小寫它們必須以一個字母或下劃線開頭,但可以包含數字字符;不能把C#關鍵字用作標識符關鍵字abstractdoInprotectedtrueasdoubleIntpublictrybaseelseInterfacereadonlytypeofboolenumInternalrefuintbreakeventIsreturnulongbyteexplicitlocksbyteuncheckedcaseexternlongsealedunsafecatchfalsenamespaceshortushortcharfinallynewsizeofusingcheckedfixednullstackallocvirtualclassfloatobjectstaticvolatileconstforoperatorstringvoidcontinueforeachoutstructwhiledecimalgotooverrideswitchdefaultifparamsthisdelegateImplicitprivatethrow用于標識符的規則標識符也可以包含Unicode字符,用語法\uXXXX來指定,其中XXXX是Unicode字符的四位16進制代碼。例如:Nameüberflu?_Identifier\u005fIdentifier最后兩個標識符是相同的,可以互換(005f是下劃線字符的Unicode代碼)標識符\u不是轉義符,而是Unicode字符的專用表示。標識符中最好不要用下劃線字符,當然這不會報錯的,但是它不符合c#的習慣。用法約定

Hungarian表示法(匈牙利命名法),比如:以前臨時變量就用前綴L,全局變量就用G,但是

在c#中不用了,因為變量超過作用域范圍就會出錯。

要求命名能達意,比如:Height,最好不要用

integerValue之類的。

字段等引用的用camel表示法:即第一個單詞的第一個字母小寫,比

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論