在C#中创建新类时的快捷方式

本文关键字:快捷方式 新类时 创建 | 更新日期: 2023-09-27 18:00:57

有可能以任何方式清理以下代码吗?

这是我在代码中使用的:

var _index = new IndexViewModel();
_index.PageMeta = new PageMeta();
_index.Que = new Q();
_Index.Test = new T();

这是我的类定义:

public class IndexViewModel {
   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

我试着记住在声明一个新类时是否有快捷方式。我可以在IndexViewModel的构造函数中放入一些东西吗?

在C#中创建新类时的快捷方式

好吧,你可以使用一个对象初始化器:

var _index = new IndexViewModel 
{
    PageMeta = new PageMeta(),
    Que = new Q(),
    Test = new T()
};

这可能不是一个很大的问题,但确实为您节省了一些重复的代码。

编辑以澄清评论中的问题

public class IndexViewModel {
   // The default constructor now initializes de values:
   public IndexViewModel() 
   {
       PageMeta = new PageMeta();
       Q = new Q();
       T = new T();
   }
   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

如果将初始化添加到构造函数中,就不需要再使用对象初始化器了:

var _index = new IndexViewModel(); //<- initialized by its own constructor

您可以很容易地添加一个构造函数,默认情况下创建每个新对象:

public class IndexViewModel {
   public IndexViewModel() {
       PageMeta = new PageMeta();
       Q = new Q();
       T = new T();
   }
   public PageMeta PageMeta { get; set; }
   public T Test { get; set; }
   public Q Que { get; set; }
}

然后,当您需要一个新的IndexViewModel,其中每个对象都有一个新对象时,只需调用

new IndexViewModel()

您的意思是想要一个初始化实例的快捷方式,对吧?如果是:

var _index = new IndexViewModel()
{
    PageMeta = new PageMeta(),
    Que = new Q(),
    Test = new T()
};

阅读你的评论:我想我没有正确理解你的问题。您希望每个实例都进行此初始化,对吗?

public class IndexViewModel 
{
    public PageMeta PageMeta { get; set; }
    public T Test { get; set; }
    public Q Que { get; set; }
    public IndexViewModel()
    {
        this.PageMeta = new PageMeta();
        this.Test = new T();
        this.Que = new Q();
    }
}

我想你可以做:

var _index = new IndexViewModel() 
{ 
    PageMeta = new PageMeta(),
    Test = new T(),
    Que = new Q()
};

从(我认为(C#3.0开始,你可以做:

var _index = new IndexViewModel { 
                   PageMeta = new PageMeta(), 
                   Que = new Q(), 
                   Test = new T()
};