如何设置类似于字段的属性值

时间:2015-05-09 10:20:56

标签: c# .net

我有一个类,我想创建多个对象。
有没有办法将对象创建为属性?

JDK_HOME

而不是这个,我怎么能做这样的事情,在这里我想添加create obj。

public class UserandProfile
{
public Users_AboutMe objAMe = new Users_AboutMe();
public Users_Education objEdu = new Users_Education();
public Users_Interests objInterests = new Users_Interests();
}

2 个答案:

答案 0 :(得分:4)

在C#6中,您可以直接在属性中初始化对象。

public Users_AboutMe objAMe { get; set; } = new Users_AboutMe();

如果您仍然使用C#5,最好只使用私有变量来保存对象

private Users_AboutMe objAMe = new Users_AboutMe();

public Users_AboutMe ObjAMe {get { return objAMe; } set { objAMe = value;}}

正如@Belahcene Benzara Tahar所提到的,你可以懒得加载私有变量。在您可能想要这样做的几种情况下。

  • 如果有可能根本不使用该变量(in 在哪种情况下,你在开始时浪费时间初始化它。)
  • 卸载稍后阶段的一些初始化时间成本 当它真正需要的时候。
  • 实例化时的类实例保持不变 一些资源,你不想使用/持有它们,直到它们为止 需要。等

为此,您从私有变量声明中删除实例化行并将其放在getter中,如下所示

private Users_AboutMe objAMe;  

public Users_AboutMe ObjAMe {
   get {
        if (objAMe == null) {
           objAMe =  new Users_AboutMe();
        }
        return objAMe;
   }
   set {
        objAMe = value;
    }
 }

检查是否objAMe

答案 1 :(得分:2)

您应该在构造函数中初始化属性。

public class UserandProfile
{
   // Properties
   public Users_AboutMe objAMe { get; set; }
   public Users_Education objEdu { get; set; }
   public Users_Interests objInterests { get; set; }

   // Constructor
   public UserandProfile()
   {
      objAMe = new Users_AboutMe();
      objEdu = new Users_Education();
      objInterests = new Users_Interests();
   }
}