C# – 學習筆記(ver 3)

嗯~
開發遊戲編輯器最後選定C#為主
應該會陸續更新吧~



目前參考書籍主要是以下兩本:
C#.NET 語法辭典 / Microsoft Corporation 原著 / 林煌章 譯著 / 2003
C# for Java Developers / Allen Jones, Adam Freeman 原著 / 洪靜宜 譯著 / 2003


這兩本都有點時間了,所以有些部分不確定其正確性…有錯請指正^^

最主要的一點就是,2004年才出的Java 5.0,許多重大功能都未提及,enum之類的



/doc

這是我在 Java 上看過最想要的功能!
寫一份文件真的很麻煩,但又想要留著日後復習或給人用,又不能不寫
C# 的方式比較麻煩一點,但是也比較活吧?
輸出的格式是 XML,可用一些工具轉成 HTML 之類的

在命令元的模式下,編譯文件的方式為:

 csc XMLsample.cs /doc:XMLsample.xml

在VS編譯器底下的話:

  1. 進入專案的 [屬性](Alt + F7)。
  2. 開啟  [建置] 分頁。
  3. 將 輸出 區塊的  [XML 文件檔案] 打勾,設定你要輸出的檔案路徑和檔名。
  4. 在建置專案時,他就會把該文件檔產出。

其他更詳細的請參考 MSDN 的文件說明。


關鍵字 out 、 ref

這兩個關鍵字要同時說明,在 C# 裡面代表著以傳址 (By Reference) 方式傳遞參數

簡單來區分兩者就是一個傳進一個傳出(廢話)

ref 需要在傳進之前給值,out 需要再傳出前給值

引用MSDN的說明「refout 關鍵字在執行階段被視為不同的兩者,但在編譯時期卻被視為完全相同。」
所以,重載(Overloading)的部分

無效的重載

  class MyClass
{
    public void MyMethod(out int i) { i = 10; }
    public void MyMethod(ref int i) { i = 10; }
}

有效的重載

 class MyClass
{
    public void MyMethod(int i) { i = 10; }
    public void MyMethod(out int i) { i = 10; }
}



@

小老鼠(at)在字串(string)的用途,C++好像沒有吧?

把小老鼠加在字串前,可以將自串內的跳脫字元(「 \ 」開頭的)忽略
可用在路徑名稱之類的,例如:

string path;
path = @"C:\Documents and Settings\All Users\Documents\My Pictures\範例圖片\Blue hills.jpg";



Params

和 Java 的「…」是同樣功能的語法,都是不定參數的宣告
規則應該都是一樣,參數列中只能有一個 params 的參數,且在其後面不得有其他參數

不定參數通常都是用大家最常用的 Console.Out.Write() 或 Java 的 System.out.Print()來作舉例
這裡用一個簡單的小程式做範例~

不定參數的方法

 public void ParamsTestFunc(params int[] arguArr)
        {
            foreach (int ttt in arguArr)
                Console.Out.WriteLine(ttt);
        }

測試

 static void Main(string[] args)
        {
            Program app = new Program();

            // 測是不定參數
            app.ParamsTestFunc(1, 2, 3, 4, 5);

            // 作為暫停用
            Console.In.ReadLine();
        }

結果

 1
 2
 3
 4
 5

範例源碼 (2008版)


foreach、in

嗯~
C++裡面雖然也有,但用起來頗為麻煩的,請參考另一篇相關的文章, for_each
格式如下

 foreach ( type identifier in expression ) statement

其中:
type – identifier 的型別。
identifier – 要存放集合項目的變數。
expression – 物件集合或陣列運算式。集合內項目的型別必須可以轉換為 identifier 型別。
statement – 將執行的內嵌陳述式。

簡單的範例在上面 Params 的部分就有用到。

接著要提的是 foreach 和集合的使用方式,須符合以下要求
例如,在以下的陳述式中:

 foreach( ItemType item in myCollection )

myCollection 必須符合:
集合型別:
      
必須是以下幾種形別: interface class struct
      
必須包含命名為 GetEnumerator 的實體方法(Instance Method)已傳回型別
       例如, Enumerator (說明如後)。

型別 Enumerator(一個類別或結構)必須包含:
       ●命名為 Current 的屬性並傳回 ItemType 或可以轉換為 ItemType 的型別。
          屬倖存取子(Accessor)完回集合目前的項目。
      
●命名為 MoveNext bool 方法,可以累加項目計算器,若在集合中有更多項
          目則傳回 true 。

有三種使用集合的方法:

1. 用先前的指令建立一個集合。這個集合只能在 C# 程式中。
2. 在實做 IEnumerable 介面之外,用先前的指令建立一個泛用集合。可從其他語言
    使用這個集合,例如 Visual Basic 。
3. 在集合類別中使用預先定義的集合。

foreach的範例請至 C# – foreach



呼呼,再打下去應該超出字數了~
這邊先End掉啦!

–End

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 變更 )

Twitter picture

You are commenting using your Twitter account. Log Out / 變更 )

Facebook照片

You are commenting using your Facebook account. Log Out / 變更 )

Google+ photo

You are commenting using your Google+ account. Log Out / 變更 )

連結到 %s