csharp變數宣告

變數宣告

C#是靜態語言,變數使用前須先宣告其型別
方便編譯器檢查

//函式內
static void Main(string[] args)
{
    // 變數,c#沒有函式內常數
    char c = 'a';
    int i = 10;
    double d = 10.0;
    string s = "abcde";
    int[] array = new int[10];
}

//類別成員
class MyClass{

    // 可變屬性
    private string name;
    private int age;

    // 不可變屬性
    private readonly int ra;

    //常數屬性
    private const int ca = 100;

    //類別屬性
    private static int sa;
}

//struct成員
struct MyStruct
{
    public string name;
    public int age;
}

實值變數

變數本身就是物件本體
通常底層會使用C語言的基本型別實作
存取這種變數效率高

static void Main(string[] args)
{
    int a = 10; // 變數內容就是32bit整數10
    double d = 10.0;// 變數內容就是IEEE 754浮點數 10.0
    char c = '風'; // 變數內容就是 unicode 16bit 中文碼
    boolean b = true;// 變數內容就是true

    //除了內建型別外,c#可使用自定義實質物件
    MyStruct my;
    my.name = "123";
    my.age = 456;
}

參照變數

變數本身不是物件本體
但是我們可以藉由點運算子來使用物件
底層使用類似C語言的指標,但複雜得多,比較相似於C++的精靈指標
其資料格式是為了提供GC能夠順利回收不使用的記憶體設計的

static void Main(string[] args)
{
    string s = "abcde"; // 參照變數定字
    int len = s.Length; // 利用點運算子使用物件屬性

    object o = new object(); //動態從heap中配置記憶體
    o.ToString(); // 利用點運算子使用物件方法
}