日期:2014-05-18  浏览次数:20718 次

C#的get,set 问题
在C#中的属性问题,比如这么一个片段
class Employee
{
  private string _name;
  private string _id;
  
  public string Id
  {
  get
  {
  return _id;
  }
  set
  {
  if(_id.length>2)
  _id=value;
  }
  }
}

get 应该就是用于返回值吧,然后set就看不懂了,value从哪来呢? 书上的例子也不怎么看得懂,能否写个简单的属性例子我看看呢?

------解决方案--------------------
get set是用来扩展域的,也就是C里的变量,只是用起来更加灵活而己。看以下代码:
using System;
public class cls
{
private int book;//定义一个域(也可以叫变量,只是面向对像里都这么叫,使用起来也更加方便)
public int Book
{
get
{
Console.WriteLine("dsf");
return book;

}
set
{
Console.WriteLine("aaa");
book=value;

}
}
public static void Main()
{
cls obj = new cls();
obj.Book = 120; //注意这一句
Console.WriteLine(obj.Book);
}

}
运行结果为:
aaa
dsf
120
也就是先把120赋值给value(相当一个存储空间),然后再用get{}返回给Book,实际上也就是一次改变变量值的过程。
那你也许会问为什么要这么复杂呢?因为这是用了嵌套,所以可以更加方便的写入其它语句,在以后你就应该学到了。

------解决方案--------------------
其实是类似于C++的类:
class A
{
 private int x;
 public int get_x()
 {
return x;
 }
 public void set_x(int i)
 {
x=i;
 }
}

这就是C# 里的get和 set