C# 快速導覽 - 權限修飾詞

類別 (class) 與其成員若沒有宣告權限修飾詞 (access modifiers) ,預設為 private ,舉例如下

class Demo {
    int a;
    int b;
    
    int DoSomething() {
        return a + b;
    }
}

class DemoTest {
    static void Main() {
        Demo d = new Demo();
        d.a = 11;
        d.b = 22;
        System.Console.WriteLine(d.DoSomething());
    }
}

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



這樣一來便無法通過編譯



主因是我們在 DemoTest 中宣告建立 Demo ,然後使用 Demo 的成員,編譯器提供的訊息就是 DemoTestDemo 成員的保護層級,因而無法存取。


C# 的權限修飾詞如下列表
關鍵字說明
public任何地方都可以存取。
protected限於類別或子類別中。
internal限於目前的檔案中。
protected internal限於目前的檔案或子類別中。
private限於類別中。


因此上例要通過編譯,須修改如下
class Demo {
    public int a;
    public int b;
    
    public int DoSomething() {
        return a + b;
    }
}

class DemoTest {
    static void Main() {
        Demo d = new Demo();
        d.a = 11;
        d.b = 22;
        System.Console.WriteLine(d.DoSomething());
    }
}

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


這樣就可以順利編譯執行囉



中英文術語對照
類別class
權限修飾詞access modifiers


您可以繼續參考
類別


相關目錄
回 C# 快速導覽
回 C# 教材
回首頁


參考資料
Standard ECMA-334 C# Language Specification
msdn: 存取修飾詞 (C# 程式設計手冊)

沒有留言: