C# 入門指南 - 程式結構

C# 程式 (program) 最外層定義名稱空間 (namespace) ,名稱空間內可以定義類別 (class) 、結構 (structure) 、介面 (interface) 、委派 (delegate) 、列舉 (Enumeration) 或其他名稱空間




簡單的 C# 程式只需要定義有 Main() 方法 (method) 的類別,但是如果要用為程式庫 (library) ,就得先定義名稱空間,名稱空間同時也是 C# 組織類別的方式。


我們在 Encrypt 之外加入 Encryptor 名稱空間的定義,另外把 Main() 拿掉,修改如下
namespace Encryptor {
    class Encrypt {
        private string cArray;
    
        public string Code {
            get { return cArray; }
            set { 
                if (value is string && value.Length == 26) {
                    cArray = value; 
                }
                else {
                    System.Console.WriteLine("something worng!!");;
                }
            }
        } 
        
        public Encrypt() {
            System.Random r = new System.Random();
            int a = 0;
            int b = 0;
            // 限定 a 為偶數
            while (a % 2 == 0) {
                a = r.Next(1, 10);
                b = r.Next(1, 10);
            }
            System.Console.Write("a: " + a + ", b: " + b + ", "); 
            
            int x, y, m;
            char c = 'a';
            int i;
            System.Text.StringBuilder s = new System.Text.StringBuilder();
            for (i = 0; i < 26; i++) {
                x = c;
                y = x * a + b;
                m = y % 26;
                s.Append((char) (m + 97)); 
                c++; 
            }
    
            this.cArray = s.ToString();   
        }
    
        public string toEncode(string s) {
            System.Text.StringBuilder r = new System.Text.StringBuilder();
            
            // 進行編碼轉換
            char c;
            int i, m;
            for (i = 0; i < s.Length; i++) { 
                if (s[i] >= 97 && s[i] <= 122) {
                    c = s[i];
                    m = c - 97;
                    r.Append(this.Code[m]);
                }
                else {
                    r.Append(s[i]);
                }
            }
            
            // 回傳字串
            return r.ToString();
        }
    
        public string toDecode(string s) {
            System.Text.StringBuilder r = new System.Text.StringBuilder();
            
            // 進行解碼的工作
            int i, j;
            for (i = 0; i < s.Length; i++) {
                if (s[i] >= 97 && s[i] <= 122) {
                    // 找出表格中對應的索引值
                    for (j = 0; j < 26; j++) {
                        if (s[i] == this.Code[j]) {
                            r.Append((char) (j + 97));
                            break;
                        }
                    }
                }
                else {
                    r.Append(s[i]);
                }
            }
    
            return r.ToString();
        }
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:encrypt.cs
    功能:示範 C# 程式 
    作者:張凱慶
    時間:西元 2012 年 10 月 */


這樣我們把 encrypt.cs 編譯為程式庫檔案,然後就可以在其他程式檔案中利用 using 引入 Encryptor 名稱空間了。


中英文術語對照
程式program
名稱空間namespace
類別class
結構structure
介面interface
委派delegate
列舉Enumeration
方法method
程式庫library


您可以繼續參考
軟體開發


相關目錄
回 C# 入門指南
回 C# 教材
回首頁


參考資料
http://msdn.microsoft.com/zh-tw/library/w2a9a9s3(v=vs.80).aspx
http://msdn.microsoft.com/zh-tw/library/z2kcy19k%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/0d941h9d%28v=vs.80%29.aspx
http://msdn.microsoft.com/zh-tw/library/aa288466%28v=vs.71%29.aspx

沒有留言: