1. 程式人生 > >C#入門之語法基礎

C#入門之語法基礎

一. C#中的關鍵字

關鍵字,是一些被C#規定了用途的重要單詞。所有關鍵字都是由小寫字母組成的。

在Visual Studio的開發環境中,關鍵字被標識為藍色。

例如

using System;
using System.Collections.Generic;
using System.Text; // 關鍵字 using ,用途是匯入名稱空間。比如這句,作用是匯入System.Text名稱空間中的類。

namespace Test // 關鍵字 namespace ,用途是宣告“名稱空間”。比如例子中,名稱空間叫做Test。
{
    class Program // 關鍵字 class ,用途是宣告類。比如例子中,類名叫做Program。
    {
static void

Main(string[ ] args) // 關鍵字 static (靜態的)、 void (無返回值)、 string (字串型別)。常常在Main()方法的宣告中看到。

                 // Main() 方法是 C# 中的特殊方法,是程式的入口,就是說,如果沒有 Main ()方法,程式就無法啟動。
{
Console.WriteLine("今日事,今日畢。");
}
}
}

二. C#的註釋

註釋分為:單行註釋、多行註釋、文件註釋。

單行註釋的符號是2條斜線(請注意斜線的方向),2條斜線右側的內容就是註釋,左側的程式碼不會受影響。

多行註釋以“/*”開始,以“*/”結束,之間的內容就是註釋,可以包含多行。

文件註釋寫在類、方法或屬性(以後會學到)的前面,它的符號是3條斜線“///”。

小貼士:Console.WriteLine()與Console.Write()不同,後者不換行,而前者會在列印之後換行。

例如

int count;//聲明瞭一個int型變數

/*列印*/
Console.Write("Yeah!");

/*
*列印
*/
Console.Write("Yeah!");

三. C#的常量

常量,顧名思義,就是“不會改變的量”。

我們平時書寫的數字(比如12.85)、字元(比如'F')、字串(比如"謝謝"),它們都屬於“字面常量”。

有一些常量既重要又容易出錯,比如圓周率π的值為3.1415926......,所以,我們常常會使用自定義常量。

例如


const 關鍵字,表明 PI 是一個常量。

double 關鍵字,表明 PI 的型別為雙精度浮點型(一種精度很高的數字型別)。

這段程式碼中使用了2次圓周率(周長、面積),但是因為使用自定義常量,所以字面常量3.1415926只書寫了一次。這樣做避免了重複書寫導致的錯誤。

小貼士:常量在宣告時賦值,之後是不能修改的。宣告常量必須同時賦值。

例如

using System;
using System.Collections.Generic;
using System.Text;

namespace Test
{
    class Program
    {
        static void Main(string[ ] args)
        {
            const string CITY = "布宜諾斯艾利斯"; //常量,城市
            const string NAME = "列奧波爾多·福圖納託·加爾鐵裡·卡斯特利"; //常量,姓名
            Console.WriteLine(NAME+"出生在"+CITY+"的一個工人家庭"); //使用常量
        }
    }
}

四. c#變數

變數能夠儲存資料,並且與常量不同,變數儲存的資料可以修改。比如今年18歲,明年可以變成19歲。

使用變數分為3步:宣告、賦值、使用。

宣告變數的語法:資料型別 變數名;

給變數賦值的語法:變數名=值;

例如


變數的宣告和賦值可以同時完成,上面程式碼Main()方法中的前兩行可以改寫為:

int age=18; //宣告並賦值

五. 演算法:交換

解決實際問題的步驟就叫做“演算法”,交換就是最常用的一種演算法。

將2個變數的值交換,需要一隻“空杯子”,就是中間變數。

例如

string a="振剛";//第一個變數
string b="文峰";//第二個變數
string temp;//中間變數
//第一步:將變數a賦值給中間變數
temp=a;//如同牛奶倒入空杯
//第二步:將變數b賦值給變數a
a=b;//如同咖啡倒入牛奶杯
//第三步:將中間變數賦值給變數b
b=temp;//如同空杯中的牛奶倒入咖啡杯
//此時交換完成,變數a儲存了“文峰”,b儲存了“振剛”

六. C#的資料型別

1. 字元型別 char ,儲存用 '' (單引號)括起來的一個字元

char sex='男';//儲存性別

2. 字串型別 string ,儲存用“”(雙引號)括起來的一串字元

stringaddress="北京市宣武區牛街北口";//儲存地址

3. 整數型別 int ,儲存整數

intage=23;//儲存年齡

4. 雙精度浮點型 double ,儲存小數

doublesalary=7991.63;//儲存工資

七. C#的型別轉換

1. 自動型別轉換:2種不同型別的資料運算,低精度型別會自動轉換為較高精度的型別。
以3.5+8為例,顯然數字8的精度較低(int),而3.5的精度較高(double),所以,8會自動轉換為double型,即轉換為3.5+8.0進行運算,結果為11.5。

例如

double  d=2;

2的精度顯然低於變數d的精度,所以2會自動轉換為2.0然後賦值給d。

例如

int  i=3.0;

變數i的精度低於3.0,但是由於i已經宣告為int型的變數,變數的值可以變,但變數的型別可不能變來變去的,所以這條命令會出錯的。


2. 強制型別轉換:無法自動轉換為我們需要的型別,可以用強制型別轉換.

比如上例可以這樣完成:

int i=(int)3.0;

數字前面的(int)表示轉換的目標型別為int,3.0會被強制轉換為3。
需要注意, double 型強制轉換為int型將失去小數部分,比如(int)2.8,我們得到的將是2。

八. C#識別符號的命名規則

程式中的變數名、常量名、類名、方法名,都叫做識別符號

C#有一套識別符號的命名規則,如果命名時不遵守規則,就會出錯。這套規則簡單說有下面三條:

1. 識別符號只能由英文字母、數字和下劃線組成,不能包含空格和其他字元。

錯誤的識別符號宣告 string $user; //錯在使用了其他字元

2. 變數名不能用數字開頭。

錯誤的識別符號宣告 double 6h; //錯在用數字開頭

3. 不能用關鍵字當變數名。

錯誤的識別符號宣告 char static; //錯在用關鍵字static做變數名


九. C#的算術運算子(一)

1. 加:+ 。加號有2個用途:當用加號連線兩個數字時,會計算出這兩個數字的和。

另一種情況,當加號兩邊包含字串的時候,會把兩邊的表示式連線成新的字串。

例如

Console.WriteLine(9+2.2);//輸出11.2

Console.WriteLine(9+"2.2");//輸出92.2,因為"2.2"是字串,所以9也被轉換為"9",+起的作用是連線字串

2. 減:- 。減號的作用就是減法。

Console.WriteLine(15-23);//輸出-8

3. 乘:* 。乘號的作用是求2數的乘積。

Console.WriteLine(0.8*3);//輸出2.4

4. 除:/ 。除號的作用是求2數相除的商。

Console.WriteLine(2/0.5);//輸出4.0

但是,2個整數相除,結果僅保留整數部分,小數部分會被捨去。

Console.WriteLine(5/10);//輸出0

十. C#的算術運算子(二)

取餘運算子 % ,求兩個數字相除的餘數。

Console.WriteLine(19/5);//求19除以5的商,輸出3
Console.WriteLine(19%5);//求19除以5的餘數,輸出4(商3餘4)
程式設計中,%常常用來檢查一個數字是否能被另一個數字整除。

例如

int number = 29;
Console.WriteLine(number%2);//求number除以2的餘數
如果輸出0,表示沒有餘數,即number能夠被2整除(是偶數);如果輸出1,表示有餘數,即number不能被2整除(是奇數)。

十一. C#的算術運算子(三)

1. ++,叫做自加運算子。

例如 你今年18歲,明年長了一歲,用程式碼寫出來是這樣:

int age=18;//今年18歲
age=age+1;//明年,在今年的年齡上加1歲
也可以寫成這樣:
int age=18;//今年18歲
age++;//明年,在今年的年齡上加1歲
age++;age=age+1;作用相同,都是變數的值+1。

2. --,叫做自減運算子。

例如 你今年18歲,用了XX護膚水以後,明年變成17歲了,可以這樣寫:

int age=18;//今年18歲
age--;//等同於 age=age-1;

3. 另外,age++;age--;也可以寫作++age;--age;

但請注意:如果與其他運算在同一語句中,++寫在變數前面或後面,演算法不一樣

例如

Console.WriteLine(age++); 作用等同於下面兩句:

Console.WriteLine(age);//先列印
age=age+1;//後自加

Console.WriteLine(++age); 作用等同於下面兩句:

age=age+1;//先自加
Console.WriteLine(age);//後列印
你看,運算順序不一樣吧,所以輸出的結果也不會相同。 例如

 static void Main(string[] args)
        {
            int x = 5;
            int y = 5;
            int z = 5;
            x++;
            Console.Write(x);
            Console.Write(y++);
            Console.Write(++z);
        }

輸出結果是656

十二. C#的比較運算子


比較運算的結果,都是布林型別( bool ),它表示邏輯上的真(成立)與假(不成立)。真與假用關鍵字 true 和 false 表示。

十三. C#的邏輯運算子

邏輯運算子用來連線多個 bool 型別表示式,實現多個條件的複合判斷。

C#中的邏輯運算子包括:邏輯非( ! )、邏輯與( && )、邏輯或( || )。

1. 邏輯非用來對某一個 bool 型別表示式取反,即“真變假”或“假變真”。

Console.WriteLine(1 > 0);//條件表示式為true,輸出True
Console.WriteLine(!(1 > 0));//用邏輯非對條件表示式取反,輸出False
2. 邏輯與用來判斷 2 個 bool 型別表示式是否同時為 true 。
int x = 5, y = 2;//同時宣告2個int型變數並賦值
Console.WriteLine(x>3 && y>3);//判斷x>3和y>3是否同時為true,由於y>3為false,所以整個表示式為false
只有當&&兩邊的表示式均為 true 時,整個表示式才為 true ;若任意一個表示式為 false ,整個表示式即為 false 。

3. 邏輯或用來判斷2個 bool 型別表示式中是否有一個為 true 。

int x = 5, y = 2;//同時宣告2個int型變數並賦值
Console.WriteLine(x>3 || y>3);//判斷x>3和y>3是否有一個為true,由於x>3為true,所以整個表示式為true
只要||兩邊的表示式有一個為 true ,整個表示式即為 true ;若兩邊的表示式均為 false ,整個表示式為 false 

對比一下,就是說: && 運算子,兩邊同真才算真,一邊為假就算假; || 運算子,一邊為真即為真,兩邊同假才是假。

例如

小張想結婚,未來丈母孃開出的條件是:存款必須過10萬,必須有房子,這兩條少一條都不行。


執行結果為false

麗麗選擇男朋友的標準,要麼是“工程師”,要麼是“運動員”,二者居其一即可


執行結果為true

十四. C#的賦值運算子

與其他運算子從左向右計算不同,賦值運算子從右向左計算。

1. 賦值“+=”:先加後賦值。

int x=5;
x += 2;//這句等同於x=x+2;執行後,x的值為7

2. 賦值“-=”:先減後賦值。

int x=5;
x -= 2;//這句等同於x=x-2;執行後,x的值為3

3. 賦值“*=”:先乘後賦值。

int x=5;
x *= 2;//這句等同於x=x*2;執行後,x的值為10

4. 賦值“/=”:先除後賦值。

int x=5;
x /= 2;//這句等同於x=x/2;執行後,x的值為2

5. 取餘賦值“%=”:先取餘後賦值。

int x=5;
x %= 2;//這句等同於x=x%2;執行後,x的值為1

十五. C#的運算子優先順序

1. 括號。如果有多層括號,要從裡向外計算。括號優先順序最高。

2. 一元運算子。

只有一個運算元的叫做一元運算子,它們的優先順序高於二元運算子。

一元運算子包括:++(自加) 、 --(自減) 、 !(邏輯非)。

有些運算子兩邊有2個運算元,比如2+3、6%5等等,這些叫做二元運算子。

3. *(乘)、/(除)、%(取餘)。

4. +(加)、-(減)。

5. >(大於)、<(小於)、>=(大於等於)、<=(小於等於)。

6. ==(等於)、!=(不等於)。

7. &&(邏輯與)。

8. ||(邏輯或)。

9. 賦值運算子。包括:=、+=、-=、*=、/=、%=。

小貼士:優先順序相同的運算子從左向右計算(賦值運算子相反)。

例如

static void Main(string[] args)
        {
            int x=1;
            bool a = ++x * x > 3; //x變為2, 2*2得4, 4>3為true
            bool b = true;//請賦值
            Console.WriteLine(a==b); //輸出結果為ture
        }