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

标签 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);
         }
     }
}

上面的类模拟了我的实际应用。我设置了一系列参数,在本例中为 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/

相关文章:

显然存在 java.lang.NoSuchMethodError

c++ - 是否可以在声明它的头文件中提供构造函数的定义?

java - 将类对象注入(inject)另一个类中,而不将其添加到构造函数中

c# - 无法使用 CSS 选择器定位链接

C# 具有自动项目删除功能的集合

c# - 无法创建常量值 - 只有基本类型

java - 这个类的构造函数在哪里?

c# - 将属性 PropertyChange 与实现 ICommand 的命令绑定(bind)

c# - 如何将对象列表转换为二级字典?

c++ - 直接初始化中的转换运算符