C#:使用对象初始化程序语法执行条件

Mik*_*ike 3 c# constructor

假设我有一个简单的类添加:

public class Multiply
{
     public int A {get; set;}
     public int B {get; set;}
     public int C {get; set;}

     public List<int> Result {get; set;}

     public void Calculate()
     {
         if (A != 0 && B!= 0 && C != 0)
         {
           Result.Add(A);
           Result.Add(B);
           Result.Add(C);
           Result.Add(A * B);
           Result.Add(A * C);
           Result.Add(B * C);
           Result.Add(A * B * C);
         }
     }
}
Run Code Online (Sandbox Code Playgroud)

上面的类模拟了我的实际应用.我有一系列设置的参数,在本例中为A,B和C.然后我执行Calculate并使用Multiply对象的Result属性来访问结果.

(可能有更好的方法来完成这个模板;想到延迟加载.如果你想建议一个更好的模板,那就不是我的问题的目的;它只是一个简单的例子来说明我的问题.)

这是我的问题:

如果我正在使用Object Intializer语法:

Multiply m = new Multiplier()
{
   A = 1,
   B = 2,
   C = 3
}

m.Calculate();
DoSomething(m.Result[5]); //DoSomething(6); 
Run Code Online (Sandbox Code Playgroud)

有没有办法Calculate()作为m初始化的一部分执行?

Jos*_*osh 5

将Result设置为只读属性并将Calculate逻辑移动到该属性.

但不,你不能用初始化语法调用方法.然后它不会是初始化语法,它只是一些替代的C#语法.