您的位置:首页 > 编程语言 > C#

C#中get和set、get{}和set{}函数的用法

2012-10-25 10:57 357 查看
A :

C# 中,get是读取属性时进行的操作,set是设置属性时进行的操作。

定义一个属性如果只有get,这个属性就是只读的。同样,只有set,属性就是只写的,当然只写的属性是没有任务意义的。

get和set:允许对属性进行读写访问。

get only:只允许读属性的值。

set only:只允许写属性的值。

get :执行 get 属性相当于读取字段的值。

以下是返回私有字段 name 的值的 get 访问器:

private string name; // the name field

public string Name
// the Name property

{

get

{

return name;

}

}

当引用属性时,除非该属性为赋值目标,否则将调用 get 访问器读取该属性的值。例如: Employee e1 = new Employee(); ... Console.Write(e1.Name);

get 访问器必须在 return 或 throw 语句中终止,并且控制不能超出访问器体.

set 访问器与返回 void 的方法类似。它使用称为 value 的隐式参数,此参数的类型是属性的类型。

在下例中,set 访问器被添加到 Name 属性:

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}

当对属性赋值时,用提供新值的参数调用 set 访问器。例如: e1.Name = "Joe";

备注

属性按如下方式,根据所使用的访问器进行分类:

只带有 get 访问器的属性称为只读属性。
无法对只读属性(get)赋值。

只带有 set 访问器的属性称为只写属性。
只写属性除作为赋值的目标外,无法对其进行引用。

同时带有 get 和 set 访问器的属性为读写属性。

在属性声明中,get 和 set 访问器都必须在属性体的内部声明。

示例 1 此例说明如何访问基类中被派生类中具有同一名称的另一个属性隐藏的属性。

public class BaseClass

{

private string name;

public string Name

{

get

{

return name;

}

set

{

name = value;

}

}

}

public class DerivedClass : BaseClass

{

private string name;

public new
string Name
// Notice the use of the new modifier , 派生类中的属性 Name 隐藏基类中的属性 Name,保用关键字new.。

{

get

{

return name;

}

set

{

name = value;

}

}

}

public class MainClass

{

public static void Main()

{

DerivedClass d1 = new DerivedClass();

d1.Name = "John";
// Derived class property

Console.WriteLine("Name in the derived class is: {0}",d1.Name);

((BaseClass)d1).Name = "Mary";
// Base class property

Console.WriteLine("Name in the base class is: {0}",

((BaseClass)d1).Name); //转换 (BaseClass) 用于访问基类中的隐藏属性

}

}

输出:



Name in the derived class is: John

Name in the base class is: Mary

set and get 它的用途: 一般是对类里面的变量进行操作. 而不是直接对类的变量进行操作.

有一个很大的作用就是: 便于维护。

B

C#的中两个函数--一个取值函数(get),一个赋值函数(set),用于定义属性

例: //定义属性类

Class
Person {

private string No=””;

private string Name=””;

public string UserNo

{

get{return NO;} //用于取值

set{No=value;} //用于赋值
改为-----------private set{No=value;}

}

public string UserName

{

get{return Name;}

set{Name=value;}
//
改为-----------private set{Name=value;}

}

}

Person per=new Person(); //创建实体对象

per.UserNo=10; per.UserName=“张三”;
//对属性进行赋值操作

此用法的好处此用法的好处此用法的好处此用法的好处:保护person类的私有性以及安全性

改变则实体对象的操作就不能对UserNo和UserName进行赋值操作了,减少了对变量的赋值,安全性肯定要提高

这样的写法还有好多:比如数据库访问例子,

public SqlConnection
GetConn {
get {return conn ;}

private set {conn=value;}
}

通过GetConn这个属性控制 所有的数据库对象,都只能访问,不能修改,这样就不容易出错。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: