接着之前的话题,学着工程生成的默认的程序,我们也来定义一个属于我们自己的类。在原有的工程下面增加一个新的文件,命名为MyClass.cs。双击打开这个文件,这个文件中的内容与之前的内容几乎一样,除了类的名字不一样,类中没有定义方法。
以此我们可以看出。命名空间的定义方法为:
类的定义方法为:
然后我们在这个类中定义一个方法:SayHi。
回到Program这个类下,在Main方法中调用这个方法,就像我们调用Console.WriteLine()那样,我们输入一个MyClass.SayHi();
这时程序会提示一个错误:Error 1 'HelloWorld.MyClass.SayHi()' is inaccessible due to its protection level F:/Using Projects/CSPrograming/CSAccidence/CSAccidence/HelloWorld/Program.cs 12 21 HelloWorld。
为什么会这样呢?在之前,我们了解过一些关键字,其中有几个修饰符大家应该还记得:public,private,protected,internal。这几个关键字的作用就是用来修饰类、方法和属性的访问权限的。我们改一下SayHi方法
然后再编译,这下正常了吧?如果不知道为什么的话请再仔细看一下这几个关键字的描述,并找出他们的区别:
public 关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。
protected 关键字是一个成员访问修饰符。受保护成员在其所在的类中可由派生类实例访问。有关 protected 与其他访问修饰符的比较,请参见可访问性级别。
private 关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。
internal 关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。
在默认情况下类的访问修饰符为public,而类的成员的修饰符为private。所以如果我们定义一个类而不加任何修饰,那么它的访问级别就是public,而成员(方法,属性)的访问级别为private。这也是为什么MyClass可以直接访问了,而SayHi却不能访问。
在C#语言规范里面,定义公共类型和私有成员不用添加任何修饰符,因为只要是一个程序员都可以看出这代表着什么。
在class MyClass前修加上一个修饰符,看下会出现什么效果?