§ ITPOW >> 文档 >> C#

C# 类教程-类成员:字段(域)、属性、索引

作者:vkvi 来源:ITPOW(原创) 日期:2008-4-8

字段(域)

可以把字段理解为类级别的变量、常量,用以存储该类的实例的相关数据。

public class Date
{
    private int _year;
    private int _month;
    private int _day;
}

大多数情况下字段的访问修饰符均为 private,如果修饰符为 public,那么在类之外都可以访问该字段,但不建议这样做,应该通过属性或方法来访问类中的数据。

属性

属性将类中的数据暴露给类外。

public class Date
{
    private int _year;
    private int _month;
    private int _day;
    
    public int Year
    {
        get
        {
            return _year;
        }
        set
        {
            _year = value;
        }
    }
    
    public int Month
    {
        get
        {
            return _month;
        }
        private set
        {
            _month = value;
        }
    }

    public int Day
    {
        get
        {
            return _day;
        }
    }
}

我们给 Date 类定义了三个属性,分别为 Year、Month、
Day。get 中使用关键词 returnset 中使用关键词 value

  • Year 可读可写属性。
  • Month 也是可读可写属性,但其写权限只限于类内部。
  • Day 是只读属性。
Date date = new Date();
date._year = 2008; //错误,_year 为 private
date.Yonth = 2008; //正确
date.Day = 3; //错误,Day 属性不可写

说明,上述这样设计一个日期类属性的读写可能是不合理的,我们这样做只是为了解释属性的具体用法。

再看一个例子。

public int PageSize
{
    get
    {
        return _pageSize;
    }
    set
    {
        if (value <= 0)
        {
            _pageSize = 20;
        }
        else
        {
            _pageSize = value;
        }
    }
}

这是一个分页类中的页大小属性,表示一页显示多少条记录。可以看到,我们在设置 PageSize 属性值时,如果值小于等于 0,则会以默认值 20 代替。

索引

public class MyClass
{
    public string this[int index]
    {
        get
        {
            return "X" + index.ToString();
        }
    }
}

使用

MyClass mc = new MyClass();
MessageBox.Show(mc[100]);
相关文章