1,函数访问等级必须高于参数等级,如函数等级是PUBLIC,则参数必须高于等于PUBLIC,若为INTERNAL 则不行。
INTERNAL 低于PUBLIC, 用于同一个程序集内引用,PUBLIC则可以被别一个程序集引用
程序集:一个DLL或EXE就是一个程序集,一个EXE可以引用其它的DLL
这就好比大门是对外开放的,说了任何人都可以进,但进门时却说某些人达不到条件
2,CLASS, STRUCT, DELEGATE及INTERFACE的默认都是INTERNAL, NAMESAPCE默认是PUBLIC且不可以使用任何MODIFER去修饰。ENUM默认也是PUBLIC的,可以修饰。
非嵌套的类或结构,只能是PUBLIC或INTERNAL, 嵌套的可以是其它修饰。
类成员和结构成员默认都是私有的。这里要特别注意:在C++中结构体成员默认为公有类型的。
结构成员不能是PROTECTED, 因为结构不能被继承。
抽象类的成员函数不能是私有的,必须是public或protected,因为它需要被子类实现
接口的内部成员只能是公有的
Any types declared within a namespace or at the top level of a compilation unit (for example, not within a namespace, class, or struct) are internal by default, but can be made public
来自 <http://meinvchengxuyuan.iteye.com/blog/1612038>
名字空间内的任何类型,以及编译单元的最高一层(如没有名字空间,类,或结构时),默认都是INTERNAL的,但可以修饰为PUBLIC。
这句对应了上面的:类,结构,委托,接口默认都是INTERNAL
3,命名空间中不可以直接有变量或函数
4,继承
abstract class IBASE
{
}
abstract class IDBASE
{
protected abstract void abfunc();
}
sealed class ENTITY : public IDBASE //错误!IDBASE前不能像C++那样使用PUBLIC等修饰。
{
protected override void abfunc() { }
}
5,C#中不可能定义全局函数,因为它是全面向对象的,要求所有函数必须在类内部。