C#中的类:字段、属性、方法-创新互联

C++的类中可以有三种内容:成员变量、成员函数和友元。

创新互联建站从2013年创立,先为三沙等服务建站,三沙等地企业,进行企业商务咨询服务。为三沙企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

一般来说,成员变量描述类的属性,成员函数描述类的操作,友元则是一种特殊的声明,被声明为友元的函数或类可以操作自己的私有成员变量和成员方法。

在Java中,类的成员有两类:属性,相当于C++的成员变量;方法,相当于C++的成员函数。

而在C#中,类的成员有四种:字段、属性、方法和事件(事件还没学到,暂缓解释C#中的类:字段、属性、方法)。

字段相当于C++中的成员变量和Java中的属性,就是在类中定义的变量(可以是基本类型或引用类型),一般来说,字段都被定义为私有。

方法相当于C++中的成员函数和Java中的方法,也就是在类里面定义的函数。

新的东西之一:属性

先用Java来说,Java中,因为类的属性一般定义为私有,在类的外部不能被操作,所以必须提供相应的函数来设置或获取私有属性的值。一般来说,设置属性值的方法以set开头,获取属性值的方法以get开头。

虽然在C#中也可以用同样的方法来操作私有字段,不过C#中提供了一种新的特性来达到这一目的,这就是属性。

首先来看属性的定义:

访问修饰符 类型 属性名

{

    get

    {

        代码段

    }

    set

    {

        代码段

    }

}

从形式上看,属性的定义很像方法的定义,只是没有参数而已。

再来看属性的使用,使用属性时很像是使用共有字段。

可以给属性赋值,也可以直接使用属性的值。例如:

class MyClass
{
    public int MyInt    //名为MyInt的公有属性
    {
        get
        {
            //代码段
        }
        set
        {
            //代码段
        }
    }
}

在程序中,可以这样来使用该属性

MyClass c = new MyClass();
c.MyInt = 100;    //
Console.WriteLine(c.MyInt);

是不是很像使用字段呢。

其实在给属性赋值的时候是调用了属性的set块;而获取属性值的时候是调用了属性的get块。所以在属性的get块中需要有一个return语句,来返回特定的值,比如return一个私有字段的值。

当给属性赋值的时候,会调用属性的set块,一般在set块中,我们会将赋给属性的值再赋给某个特定的私有字段。那么,赋给属性的值存在什么地方呢?答案是存储在一个叫value的东西里面(固定写法,而且value是关键字),所以在set块中,一般是将value赋给某个字段。

例如:

class MyClass
{
    private int myInt;
    public int MyInt
    {
        get
        {
            return myInt;
        }
        set
        {
            myInt = value;
        }
    }
}

// 在程序中使用属性来操纵私有字段
MyInt = 100;
int m = MyInt + 1;

在属性的get和set块中,我们可以做更多的操作,如:检查范围,格式转换等。

属性可以是public的、private的、protected的,也可以是virtual的、override的、abstract的。

属性的get和set块也可是是public的、protected的、private的或者默认的。

get和set块可以两个都有,也可以只有一个,但至少要有一个。

在类的内部使用属性时,和使用字段是一样的。

get块和set块又叫访问器,访问器的可访问性不可高于属性。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前名称:C#中的类:字段、属性、方法-创新互联
URL标题:http://hbruida.cn/article/cdjgej.html