• C#语言中的修饰符


    public:公有访问。不受任何限制。

    private:私有访问。只限于本类成员访问,子类和实例都不能访问。

    protected:保护访问。只限于本类和子类访问,实例不能访问。

    internal:内部访问。只限于本项目(程序集)内访问,其他不能访问。

    protected internal :内部保护访问。只限于本项目或是本类和子类访问,其他不

                       能访问

    1、类(class)
        默认的修饰符:private    
        可以被修饰的:public,private,internal,protected,protected internal

    2、枚举(enum)
        默认的修饰符:private
        可以被修饰的:public,private,internal

    3、结构(struct)
        默认的修饰符:public

    4、接口(interface)
        默认的修饰符:public

    只能用在方法或变量的修饰符

    (1) const:指定无法修改字段或局部变量的值。

    用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。

    (2) new:从基类成员隐藏继承的成员。

    在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成 员的派生版本将替换基类版本。在不使用 new修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。

    若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new修饰符修饰该成员。

    对同一成员同时使用 new和override是错误的,因为这两个修饰符在含义上相互排斥。使用 new会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override则扩展继承成员的实现。

    (3) virtual:在派生类中声明其实现可由重写成员更改的方法或访问器。

    用于修饰方法、属性、索引器或事件声明,并且允许在派生类中重写这些对象。

    调用虚方法时,将为重写成员检查该对象的运行时类型。将调用大部分派生类中的该重写成员,如果没有派生类重写该成员,则它可能是原始成员。

    默认情况下,方法是非虚拟的。不能重写非虚方法。

    virtual修饰符不能与 static、abstract和 override修饰符一起使用。

    除了声明和调用语法不同外,虚拟属性的行为与抽象方法一样。

    (4) override:提供从基类继承的虚拟成员的新实现。

    要扩展或修改继承的方法、属性、索引器或事件的抽象实现或虚实现,必须使用 override修饰符。

    (5) readonly:声明一个字段,该字段只能赋值为该声明的一部分或者在同一个类的构造函数中。

    是可以在字段上使用的修饰符。当字段声明包括 readonly修饰符时,该声明引入的字段赋值只能作为声明的一部分出现,或者出现在同一类的构造函数中。在此示例中,字段year的值无法在ChangeYear方法中更改,即使在类构造函数中给它赋了值。


    =========================================================================

    C#中除访问修饰符外,还有很多非访问的修饰符:

    partial,abstract,sealed,static,virtual,override。

    partial:部分类,可以将一个类分成几部分写在不同的文件中,最终编译时将合并

            成一个文件,且各个部分不能分散在不同程序集中。

    abstract:抽象类,不能够创建该类的实例;修饰方法时表示该方法需要由子类来  

             实现,如果子类没有实现该方法,那么子类同样是抽象类。含有抽象方   

         法的类一定是抽象类。

    sealed:密封类,该类不能够被继承;修饰方法时表示该方法不能被重写。

    static:静态类,不能被实例化,既然不能被实例化,那么这个类也就不能够含有  

           对象成员,即该类所有成员为静态;访问类成员时只能通过“类名.成员    

         名”的方式访问。

    virtual:修饰方法成员,表示虚方法。父类可以含有该类的实现,子类可以重写该

             方法。

    override:表示该方法重写了父类的方法。

    无或internal
      类只能在当前项目中访问
    public
     类可以在任何地方访问公有访问。不受任何限制。

    abstract或internal abstract
        类只能在当前项目中访问,不能实例化,只能继承私有访问
    public abstract
        类可以在任何地方访问,不能实例化,只能继承
    sealed或internal sealed
        类只能在当前项目中访问,不能派生,只能实例化
    public sealed
        类可以在任何地方访问,不能派生,只能实例化

  • 相关阅读:
    201521123062《Java程序设计》第11周学习总结
    201521123062《Java程序设计》第10周学习总结
    201521123062《Java程序设计》第9周学习总结
    201521123062《Java程序设计》第8周学习总结
    201521123062《Java程序设计》第7周学习总结
    201521123062《Java程序设计》第6周学习总结
    201521123062《Java程序设计》第5周学习总结
    MarkDown 例子
    201521123062《Java程序设计》第4周学习总结
    201521123060 《Java程序设计》第11周学习总结
  • 原文地址:https://www.cnblogs.com/xwl317/p/6836128.html
Copyright © 2020-2023  润新知