C#基礎語法

1.標識符(Identifiers)

變量命名規則:
必須以字母或下劃線開頭;
只能由字母、數字、下劃線組成;
不能與C#關鍵字同名。

特殊情況:可以使用“@”符號將關鍵字用作標識符
Ex:if 是關鍵字 ; @if 作爲標識符if
可能包含Unicode轉義序列,如b\u0061ck  the identifier back
字符串:
"file \"C:\\sample.txt\""  file "C:\sample.txt"
"file \x0022C:\u005csample.txt\x0022"
“\”被當作轉義符
特殊情況:字符串前面被冠以“@” the \ is not interpreted as a escape character \不再被看做轉義符any " must be doubled 引號必須雙倍the string may span several lines 字符串可能跨越多行Ex:@"file" file@"""C:\sample.txt""" "C:\sample.txt"

2.數據類型

重點是相較java特有的數據類型。

sbyte  範圍是-128~127 byte範圍是0~255
ushort 0~65535
uint   0~2^32-1
ulong  0~2^64-1
decimal  128bit

Structs

Delegates

值類型和引用類型

value type               reference type
存放在棧上stack           存放在堆上heap
初始化 0,false,‘\0’     null

3.

static void Main(string[] args)中的string[] args用來接收命令行傳入的參數,它是可選的,不是必須的。

4.結構體struct

①結構體不能在聲明時初始化

struct Point{
    int x=0; //編譯錯誤
}

②結構體既不能繼承,也不能被繼承,但可以實現接口

5.可見性標識符

public    命名空間內可見

private   只有在聲明的類或結構體中可見

如未聲明,結構體和類的成員默認爲private;接口和枚舉成員默認爲public

6.

①常量數據必須在聲明時初始化,只讀類型readonly必須在聲明或構造函數中初始化

②static靜態類型成員屬於類而不屬於某個對象

不能將常量聲明爲靜態類型

7.ref 和 out

Ref和Out都是引用傳遞,Ref的重點是把值傳給調用方法,Out則是得到調用方法的值,類似於有返回類型的方法返回的值;

在使用兩者時一定要注意一下兩點,否則編譯出現錯誤

a) ref 變量使用前要先聲明同時要賦值 a=20;

b)方法調用參數要加上相應的關鍵字 ref or out;

static void main()
{

int a = 20;
int b = 30;
int c;

//把"a","b"引用傳進去,雖然此方法沒有返回值,但是兩者值已經調換
SwapMethod(ref a, ref b);

Console.WriteLine(" After Swap a is {0},b is {1} ",a,b);

//"out"可以理解成傳進去的引用"c"經過一系列的處理,結果就是值也發生了變化
OutTest(out c);

Console.WriteLine("The out value is {0}.",c);

}

static void SwapMethod(ref int a,ref int b)
{
int tem;
tem = a;
a = b;
b = tem;
}

static void OutTest(out int a)
{
a = 10 * 10;
}

輸出結果:

After Swap A is 30,B is 20

The out value is 100.

8.

①一個類不聲明構造函數,編譯器就會自動生成一個默認的無參構造。

②如果類中聲明瞭構造函數,就不會自動生成無參構造函數了。

class C{
    int x;
    public C(int y)
    { x=y;}
}

C c1=new C(); //錯誤
C c2=new C(3); //正確

③對於所有的struct,編譯器都會自動生成一個默認的無參構造(即使已經人爲定義了其他構造),所以不能再人爲定義無參構造。

9.static 構造

class Rectangle {
...
static Rectangle() {
Console.WriteLine("Rectangle initialized");
}
}
struct Point {
...
static Point() {
Console.WriteLine("Point initialized");
}
}

注意事項:

①必須無參,沒有public 或 private修飾符,並且最多只能有一個

②在相應類型使用之前調用一次,用來初始化靜態字段

10.Destructors析構函數

①析構函數在垃圾收集器回收對象之前調用
②最後自動調用基類的析構函數

③結構struct不能有析構函數

11.嵌套類型

內部類可以訪問外部類的所有成員(即使是私有成員)

外部類只能訪問內部類的public成員

內部類是public時才能被其他類訪問

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章