C#中get和set、get{}和set{}函数的⽤法
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
writeline函数{
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";
备注
属性按如下⽅式,根据所使⽤的访问器进⾏分类:
1. 只带有 get 访问器的属性称为只读属性。
2. ⽆法对只读属性(get)赋值。
3. 只带有 set 访问器的属性称为只写属性。
4. 只写属性除作为赋值的⽬标外,⽆法对其进⾏引⽤。
5. 同时带有 get 和 set 访问器的属性为读写属性。
6. 在属性声明中,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这个属性控制 所有的数据库对象,都只能访问,不能修改,这样就不容易出错。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论