假设我有一个简单的类,它添加了:
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);
}
}
}
上面的类模拟了我的实际应用。我设置了一系列参数,在本例中为 A、B 和 C。然后我执行 Calculate 并使用 Multiply 对象的 Result 属性来访问结果。
(可能有更好的方法来完成这个模板;我想到了延迟加载。如果你想建议一个更好的模板,那就去吧,但这不是我问题的目的;它只是一个简单的例子来说明我的问题.)
这是我的问题:
如果我使用对象初始化语法:
Multiply m = new Multiplier()
{
A = 1,
B = 2,
C = 3
}
m.Calculate();
DoSomething(m.Result[5]); //DoSomething(6);
有没有办法将 Calculate()
作为 m
初始化的一部分执行?
最佳答案
将 Result 设置为只读属性并将计算逻辑移至它。
但是不行,您不能使用初始化语法调用方法。那么它就不是初始化语法,它只是一些替代的 C# 语法。
关于C#:使用对象初始化器语法执行条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5087196/