C#中类的前面加上访问限定符有作用?
比如,在一个工程中,有名空间A和B,在A中的类的签名加上public和不加public有什么不同?
当不使用名空间的时候,在类的前面加访问限定符又有什么作用?
C#新手,望各位帮忙解答下。

解决方案 »

  1.   

    成员的“已声明可访问性”可以是下列之一:Public,选择它的方法是在成员声明中包括 public 修饰符。public 的直观含义是“访问不受限制”。
    Protected,选择它的方法是在成员声明中包括 protected 修饰符。protected 的直观含义是“访问范围限定于它所属的类或从该类派生的类型”。
    Internal,选择它的方法是在成员声明中包括 internal 修饰符。internal 的直观含义是“访问范围限定于此程序”。
    Protected internal(意为受保护或内部的),选择它的方法是在成员声明中包括 protected 和 internal 修饰符。protected internal 的直观含义是“访问范围限定于此程序或那些由它所属的类派生的类型”。
    Private,选择它的方法是在成员声明中包括 private 修饰符。private 的直观含义是“访问范围限定于它所属的类型”。 
    声明一个成员时所能选择的已声明可访问性的类型,依赖于该成员声明出现处的上下文。此外,当成员声明不包含任何访问修饰符时,声明发生处的上下文会为该成员选择一个默认的已声明可访问性。命名空间隐式地具有 public 已声明可访问性。在命名空间声明中不允许使用访问修饰符。
    编译单元或命名空间中声明的类型可以具有 public 或 internal 已声明可访问性,默认的已声明可访问性为 internal。
    类成员可具有五种已声明可访问性中的任何一种,默认为 private 已声明可访问性。(请注意,声明为类成员的类型可具有五种已声明可访问性中的任何一种,而声明为命名空间成员的类型只能具有 public 或 internal 已声明可访问性。)
    结构成员可以具有 public、internal 或 private 已声明可访问性并默认为 private 已声明可访问性,这是因为结构是隐式地密封的。结构的成员若是在此结构中声明的(也就是说,不是由该结构从它的基类中继承的)不能具有 protected 或 protected internal 已声明可访问性。(请注意,声明为结构成员的类型可具有 public、internal 或 private 已声明可访问性,而声明为命名空间成员的类型只能具有 public 或 internal 已声明可访问性。)
    接口成员隐式地具有 public 已声明可访问性。在接口成员声明中不允许使用访问修饰符。
    枚举成员隐式地具有 public 已声明可访问性。在枚举成员声明中不允许使用访问修饰符。 
    public, internal, protected internal, private表明类实例方法的可访问性.public, protected, protected internal, private表明继承时父类方法的可访问性.
      

  2.   

    public  只对嵌套类有用,如下的代码将不能访问类B,编译会出错.但如果在B类前加public就不会出错:public class Busing System;
    namespace ConsoleApplication1
    {
    public class A
    {
    class B
    {
    }
    }
    /// <summary>
    /// Class1 的摘要说明。
    /// </summary>
    class Class1
    {
    /// <summary>
    /// 应用程序的主入口点。
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
    A.B x = new A.B();
    }
    }
    }