C# 杂项

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#中不可能定义全局函数,因为它是全面向对象的,要求所有函数必须在类内部。

原文地址:https://www.cnblogs.com/timeObjserver/p/5926108.html