黑马程序员:C#中的属性和修饰符

----------------------  ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 

        在自学的过程中被C#中的属性和各种修饰符弄得眼晕啊有木有,为了学习时更加清晰明了,我决定赶紧的加强基础,不求对属性和修饰符理解的多深刻,起码求熟啊。


属性:属性结合了字段和方法的多个方面。

             对于对象的用户,属性显示为字段,访问该属性需要完全相同的语法。

             对于类的实现者,属性是一个或两个代码块,表示一个 get 访问器和/或一个 set 访问器。

             当读取属性时,执行 get 访问器的代码块;当向属性分配一个新值时,执行 set 访问器的代码块。

             不具有 set 访问器的属性被视为只读属性。不具有 get 访问器的属性被视为只写属性。同时具有这两个访问器的属性是读写属性。

            get 访问器体与方法体相似。它必须返回属性类型的值。执行 get 访问器相当于读取字段的值。get 访问器必须以 return 或 throw 语句终止,并且控制权不能离开访问器体(也就是说return 或 throw只能在get的“{}”中出现,写到get的“{}”外错误)。

             set 访问器类似于返回类型为 void 的方法。它使用称为 value 的隐式参数,此参数的类型是属性的类型。当对属性赋值时,用提供新值的参数调用 set 访问器。

属性举例:

public class Student
{
    private int  score;


    public int Score//对于类的实现者,属性是一个或两个代码块
    {
        get//表示一个 get 访问器,当读取属性时,执行 get 访问器的代码块
        {
            return score;//它必须返回属性类型的值。
        }
        set //一个 set 访问器,当向属性分配一个新值时,执行 set 访问器的代码块
       {
            score = value;
        }   
     }
}

修饰符:用于限定类型以及类型成员的申明的一种符号。

一,访问修饰符

指定声明的类型和类型成员的可访问性。

(1)     public

public关键字是类型和类型成员的访问修饰符。公共访问是允许的最高访问级别。对访问公共成员没有限制。

(2)     private

private关键字是一个成员访问修饰符。私有访问是允许的最低访问级别。私有成员只有在声明它们的类和结构体中才是可访问的。

(3)     internal

internal关键字是类型和类型成员的访问修饰符。只有在同一程序集的文件中,内部类型或成员才是可访问的。

(4)     protected

protected关键字是一个成员访问修饰符。受保护成员在它的类中可访问并且可由派生类访问。

二,类修饰符

(1)     abstract:可以被指示一个类只能 作为其它类的基类 .

        *abstract修饰符可以和类、方法、属性、索引器及事件一起使用。在类声明中使用 abstract修饰符以指示某个类只能是其他类的基类。标记为抽象或包含在抽象类中的成员必须通过从抽象类派生的类来实现。

(2)    sealed:指示一个类不能被继承.

 *sealed修饰符可以应用于类、实例方法和属性。密封类不能被继承。密封方法会重写基类中的方法,但其本身不能在任何派生类中进一步重写。当应用于方法或属性时,sealed修饰符必须始终与override一起使用.

(3)    static:修饰类时表示该类是静态类,不能够实例化该类的对象,该类的成员为静态。

*使用  static 修饰符声明属于类型本身而不是属于特定对象的静态成员。 static 修饰符可用于类、字段、方法、属性、运算符、事件和构造函数,但不能用于索引器、析构函数或类以外的类型。

三,

成员修饰符

abstract:指示该方法或属性没有实现.
const:指定域或局部变量的值不能被改动.
*const 关键字用于修改字段或局部变量的声明。它指定字段或局部变量的值是常数,不能被修改。
event:声明一个事件.

*类和结构使用事件将出现的可能影响对象状态的事件通知给对象。

extern:指示方法在外部实现.

*extern修饰符用于声明在外部实现的方法。extern修饰符的常见用法是在使用 Interop 服务           调入非托管代码时与 DllImport属性一起使用;在这种情况下,该方法还必须声明为 static

 extern关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。

   abstract extern修饰符一起使用来修改同一成员是错误的。使用 extern修饰符意味着方法在 C# 代码的外部实现,而使用 abstract修饰符意味着在类中未提供方法实现。

override:对由基类继承成员的新实现.

*在用作修饰符时,new关键字可以显式隐藏从基类继承的成员。隐藏继承的成员意味着该成   员的派生版本将替换基类版本。在不使用 new修饰符的情况下隐藏成员是允许的,但会生成警告。使用 new显式隐藏成员会取消此警告,并记录代之以派生版本这一事实。若要隐藏继承的成员,请使用相同名称在派生类中声明该成员,并使用 new修饰符修饰该成员。对同一成员同时使用 new和override是错误的,因为这两个修饰符在含义上相互排斥。使用 new会用同样的名称创建一个新成员并使原始成员变为隐藏的,而 override则扩展继承成员的实现。在不隐藏继承成员的声明中使用 new修饰符将会生成警告。

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



----------------------  ASP.Net+Android+IOS开发.Net培训、期待与您交流! ---------------------- 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值