将值添加到类时是否可以添加条件

时间:2019-01-13 13:25:02

标签: c# asp.net list arraylist

您好,我使用具有3个属性的类,其中一个属性是一个数组。我想将数据列表添加到类中。

public class model
{
    public string Name { get; set; }
    public string Status { get; set; }
    public string[] Actions { get; set; }
}

在将值添加到上述类中时,如果status属性的值是“成功”,则必须为“操作”添加值“暂停和刷新”。否则,我必须添加“开始并刷新”值。当我尝试以下即时通讯时出现编译错误

model m = new model
            {
                Name = "aaa",
                Status = "success",
                Actions=new string[]{
                  if(status=="success){
                    "Stop",
                    "Restart"
                      }
                }
            };

是否可以根据上述条件增加价值?

4 个答案:

答案 0 :(得分:1)

您可以使用ternary conditional operator,例如:

Actions = status=="success"
    ? new string[]{ "Stop", "Restart" }
    : new string[]{ "Pause", "Refresh" }

答案 1 :(得分:0)

三元运算符用法示例:

var status = "success";
model m = new model
{
    Name = "aaa",
    Status = status,
    Actions = status == "success"
        ? new[]
        {
            "Pause",
            "Refresh"
        }
        : new[]
        {
            "Stop",
            "Restart"
        }
};

答案 2 :(得分:0)

您可以尝试以下方法:

Actions = status == "success" 
              ? new string[]{"value"} 
              : new string[] {"another value"};

我们使用ternary conditional运算符将适当的值分配给Actions。当条件status=="success"为真时,将new string[]{"value"}的值分配给Actions。否则,将new string[] {"another value"}的值分配给Actions

答案 3 :(得分:0)

从理论上讲,是的,从技术上讲,不是。

初始化程序只是一个代理,用于创建该结构的新实例,调用其默认构造函数,然后设置每个这些成员值。因此,从理论上讲,它可以正常工作,但是从语法上讲,由于尚未初始化模型,因此该阶段无法访问该模型。您需要自行设置。

如果是全局行为,则可以编写一个仅包含名称和状态的构造函数,然后填写操作,但是使用初始化程序,ctor总是首先执行,因此无法访问任何初始化程序数据。

编辑,因为显然需要一个。我说的是为什么OP试图执行的操作无法编译。您无法查询其他内联初始化的成员。是的,您可以通过预先声明状态变量来解决它。

相关问题