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

大家帮我看看这个get,set方法的作用?
public class CurrentUser
  {
  #region Instance
  private static CurrentUser m_Instnace;

  public static CurrentUser Instance
  {
  get
  {
  if (m_Instnace == null)
  {
  m_Instnace = new CurrentUser();
  }

  return m_Instnace;
  }
  }

  private CurrentUser()
  { }
  #endregion
  public string name {

  get {
  return name;
  }
  set
  {
  name = value;
  }
   
  }
  public UserInfo User { get; set; }

  public Role Role { get; set; }

  public Edition Edition { get; set; }

  public List<Module> Modules { get; set; }

  public bool CanUseModule(int moduleNO)
  {
  foreach (Module module in this.Modules)
  {
  if (module.ID == moduleNO)
  return true;
  }
  return false;
  }
  }
刚刚接触.net技术,想问一下,public Role Role { get; set; }这个get,set没有方法体,他有什么作用,而且CurrentUser本身也不是接口和抽象类,那么为什么要这样写,普通类中方法也可以没有方法体吗?



------解决方案--------------------
那是之前版本的写法
在 C# 3.0 和更高版本中,当属性的访问器中不需要其他逻辑时,自动实现的属性可使属性声明更加简洁。客户端代码还可通过这些属性创建对象。如下面的示例所示声明属性时,编译器将创建一个私有的匿名支持字段,该字段只能通过属性的get 和 set 访问器进行访问。

C# code
// Auto-Impl Properties for trivial get and set
public double TotalPurchases {get; set; }

------解决方案--------------------
和C/C++以及Java不同,C#是一门快速发展的语言,C# 5.0和C# 1.1相比,早就有了天翻地覆的变化。

所以上坑爹的培训班之前最好搞清楚他们培训的是基于什么版本的C#,否则学了半天出来,你可能会发现看到C#代码还是像天书一样。
------解决方案--------------------
get 说明该属性可读 set说明该属性可写
比如 public double TotalPurchases {get; set; }

得到属性值 double temp_value=TotalPurchases ;//会调用属性的get得到其值

TotalPurchases =2.0;会调用属性的set方法,将值保存设置上
------解决方案--------------------
探讨
那么如何去调用相应的get,set方法。