有谁能够将C#类中的get 和set 函数的具体用法说透一点呀?

来源:百度知道 编辑:UC知道 时间:2024/06/14 18:34:55
我在C#的属性中使用了get 和set 函数,但是我看不出它的具体作用体现在哪!谁能将它说得清楚一点啊!

C#语言有两个函数--一个赋值函数(get),一个取值函数(set),这从它生成的中间语言代码可以清晰地看到。C#不提倡将域的保护级别设为public而使用户在类外任意操作--那样太不OO,或者具体点说太不安全!对所有有必要在类外可见的域,C#推荐采用属性来表达。属性不表示存储位置,这是属性和域的根本性的区别。下面是一个典型的属性设计:

using System;
class MyClass
{
int integer;
public int Integer
{
get {return integer;}
set {integer=value;}
}
}

class Test
{
public static void Main()
{
MyClass MyObject=new MyClass();
Console.Write(MyObject.Integer);
MyObject.Integer++;
Console.Write(MyObject.Integer);
}
}

一如我们期待的那样,程序输出0 1。我们可以看到属性通过对方法的包装向程序员提供了一个友好的域成员的存取界面。这里的value是C#的关键字,是我们进行属性操作时的set的隐含参数,也就是我们在执行属性写操作时的右值。

属性提供了只读(get),只写(set),读写(get和 set)三种接口操作。对域的这三种操作,我们必须在同一个属性名下声明,而不可以将它们分离,看下面的实现:

class MyClass
{
private string name;

public string Name
{
get { return name; }
}
public string Name
{
set { na