CSDN博客

img zhf7878

一周学会C#(属性三)

发表于2004/1/12 17:12:00  873人阅读

一周学会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

Ø       属性不能使用参数

Ø       属性不能使用[ ] 参数

Ø       属性不能使用括号

0 0

相关博文

我的热门文章

img
取 消
img