一周学会C#(属性三)

一周学会C#(属性三)

C#才鸟(QQ:249178521

8.    静态属性

l      静态属性是和类联系在一起的

Ø       只能通过类名使用

sealed class Error

{

    ...

    public static TextWriter Log

    {  

        get { return log; }

    }

    ...

    private static Stream sink

        = new FileStream("error.log", FileMode.Append);

    private static TextWriter log

        = new StreamWriter(sink);

}

Error.Log.WriteLine("time out");

字段可以是静态的,所以属性也可以是静态的。声明静态属性的语法很简单,只要在属性名前加入static关键字。静态函数中的机制和限制同样适用于静态属性。静态属性可以同一般的属性一样声明为只读或只写。

静态属性没有隐含的this参数。例如,上面的例子中,Log这个静态属性之所以能访问log这个字段,是因为log是一个静态字段。如果log是一个实例字段,那么Log这个静态属性就不能访问它。例如:

       public sealed class Error

    {

       public static TextWriter Log

       {

           get { return log; }

       }

       private Stream sink = ...;

       private TextWriter log = ...;

    }

9.    属性vs.字段

l      属性和字段的比较:

Ø       属性不能使用ref/out 型参数

Ø       属性使用前必须赋值

//属性

struct Time

{

    ...

    public int Hour

    {  

        set { ... }

    }

    private int hour;

}

Time lunch;

Method(out lunch.Hour); //错误

lunch.Hour = 12;//错误

 

//字段

struct Time

{

    ...

    public int Hour;

    ...

}

Time lunch;

Method(out lunch.Hour); //正确

lunch.Hour = 12;

属性使用前必须赋值,例如:

              Time lunch;

       lunch.Hour = 12;//错误,lunch没有初始化

10.    属性vs.函数

l       相似点

Ø       都包含执行代码

Ø       都可以有访问修饰符

Ø       都可以有virtual, abstract, override 修饰符

Ø       都可以用在接口中

l       不同点

Ø       属性只能拥有get/set 语句

Ø       属性不可以是void

Ø       属性不能使用参数

Ø       属性不能使用[ ] 参数

Ø       属性不能使用括号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值