在构造函数中或在类的顶部创建一个对象

Eli*_*eth 5 c# constructor class object instantiation

哪个声明/实例更好?为什么?

public class MainWindow
{
   private Test _test;

   public MainWindow()
   {
       _test = new Test();
   }
}
Run Code Online (Sandbox Code Playgroud)

要么

public class MainWindow
{
   private Test _test = new Test();

   public MainWindow()
   {

   }
}
Run Code Online (Sandbox Code Playgroud)

slu*_*ter 3

问自己这个问题:当您添加其他构造函数时会发生什么MainWindow?您是否想必须记住调用其他构造函数以确保_test正确初始化?_test或者如果使用另一个构造函数,可以不初始化吗?

就个人而言,在创建 UI 组件时,我会尽可能多地将故障点从构造函数中移出,并将类似的内容移至Loaded事件处理程序,或者像选项 2 中那样保留它(这可以使初始化很好地本地化)在文件中)。