C#筆記(一)

一、Serialization序列化

serialization Rules

1、避免structs;
2、在需要序列化的類裏面需要標明[Serializable];
3、在public作用域內一旦聲明Serializable,那麼整個public區域都被序列化,不管public 有多長;
4、private作用域會在一些編輯者規定的條件下序列化;
5、如果private區域需要序列化,需要聲明[SerializeField];
6、不需要序列化的地方需要聲明[NonSerialized];

二、C#命名空間
1、同一個命名空間可以分散在多個文件中;
2、位於任何命名空間之外的語法元素都被認爲是放在匿名全局命名空間中的;
3、命名空間可以多級嵌套;

三、錙銖

1、C#沒有頭文件,因爲C#不允許把類的聲明和定義分開;

2、C#是一種強類型語言,意味着每個對象有且只有一種類型。這個類型在對象創建時就已經完全定義,並在對象執行期間保持不變。

3、C#中的所有變量使用之前都必須初始化,否則編譯器會在初始化時產生一個編譯錯誤。


四、Hello World !

每學一門語言,都會先打出這句話。約定俗成,程序員的風格。那麼hello, world到底從何而來?這裏閒扯一下。

hello world的起源要追溯到1972年,貝爾實驗室著名研究員Brian Kernighan在撰寫“B語言教程與指導(Tutorial Introduction to the Language B)”時初次使用(程序),這是目前已知最早的在計算機著作中將hello和world一起使用的記錄。之後,在1978年,他在他和Dennis Ritchie合作撰寫的C語言聖經“The C Programming Language”中,延用了“hello,world”句式,作爲開篇第一個程序。在這個程序裏,輸出的”hello,world”全部是小寫,沒有感嘆號,逗號後有一空格。雖然之後幾乎沒能流傳下來這個最初的格式,但從此用hello world向世界打招呼成爲慣例。

上代碼——

#region
#define T
#define _Fun_
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CSTest
{
    class Program
    {
        [System.Diagnostics.Conditional("_Fun_")]
        [System.Diagnostics.Conditional("T")]

        public static void T(string s)
        {
            global::System.Console.WriteLine(s);
        }

        public static void Fun(string s)
        {
            T("dddddddd");
            global::System.Console.WriteLine(s);
        }
        static void Main(string[] args)
        {
            Fun("aaaaaaa");
            global::System.Console.WriteLine("hello, world");
            global::System.Console.ReadLine();
        }
    }
    
}
#endregion

知識點分解:

1、#region和#endregion的用法在於可以使一部分代碼塊摺疊和展開,是一種小技巧;

2、[System.Diagnostics.Conditional("_Fun_")]  用於使函數按照常量定義來調用。但是有限制條件,就是函數返回值必須是void。

好處在於如果需要修改宏定義的部分不必一個一個的去註釋代碼,因爲如果常量所代表的函數沒有實現的話也不會產生錯誤。conditional是按照函數的實際意義編譯的。

3、global:: 用於區分命名空間的別名。

4、Main函數必須是靜態的,而且首字母需大寫。這點於c/c++略有不同。

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