【问题标题】:Can I edit multiple array values in one line in C#我可以在 C# 中的一行中编辑多个数组值吗
【发布时间】:2022-01-02 07:07:00
【问题描述】:

所以我有一些非常基本的代码,我想知道将它放在一个数组中是否更好,以及是否可以在一行中编辑一个数组的多个值。

我的代码看起来像这样,你可以猜到每个布尔值都有一个 btn_****_Click 方法。我显然可以做一个 bool[] whichClick = new bool 然后将它们全部添加,但是有没有一种速记方法可以在一个命令中编辑所有 7 个布尔值?如果我仍然坚持在每种方法中使用 7 行来设置所有 7 个布尔值,那么将它放入数组对我没有任何好处。

private void btn_Byte_Click(object sender, EventArgs e)
    {
        byteClick = true;
        shortClick = false;
        intClick = false;
        longClick = false;
        floatClick = false;
        douClick = false;
        decClick = false;
    }
   public void PostProcess(decimal left, decimal right, decimal answer, string oP)
    {
        string outputStr = "";

        // If statements for which data type was selected
        if (byteClick == true)
        {
            try
            {
                byte byteLeft = Decimal.ToByte(left);
                byte byteRight = Decimal.ToByte(right);
                byte byteAnswer = Decimal.ToByte(answer);
                outputStr = $"{byteLeft}{oP}{byteRight}{" = "}{byteAnswer}";
                lbl_Output.Text = outputStr;
            }
            catch (OverflowException) { Error(2); Error(0); }
        }
    }

【问题讨论】:

  • 当您使用这些布尔字段作为标志时,您最好使用 Enum 来代替...为了节省行,Rans 答案可能会有所帮助,或者您创建一个传递的方法... - 一个枚举还是字符串?
  • 谢谢。我想我现在会用他的,然后再看看是否有人想出更短的东西。我显然还在学习 C#,所以我对 Enum 不太满意。我的代码目前按原样运行,我不想用我不知道如何正确使用的东西来破坏它。

标签: c# arrays


【解决方案1】:

这对于Enum 来说可能是一个很好的用例。

像这样定义Enum

public Enum ClickType 
{
    None,
    Byte,
    Short,
    Int,
    Long,
    Float,
    Double,
    Decimal
}

向包含事件处理程序的类添加一个字段:

private ClickType clickType;

然后,在事件处理程序中,设置此字段:

private void btn_Byte_Click(object sender, EventArgs e)
{
    this.clickType = ClickType.Byte;
}

postProcess() 方法中,执行:

public void PostProcess(decimal left, decimal right, decimal answer, string oP)
{
    ...
    // Or replace this with a switch-case
    if (this.clickType == ClickType.Byte)
    {
        ...
    }
    ...
}

【讨论】:

    【解决方案2】:

    你可以这样写

        byteClick = true;
        shortClick = intClick = longClick = floatClick = douClick = decClick = false;
    

    【讨论】:

    • @KyleC 这个答案有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 2013-01-25
    • 2019-09-06
    • 2020-10-25
    • 2022-01-23
    • 2015-06-29
    • 2016-10-21
    • 2010-12-09
    • 1970-01-01
    相关资源
    最近更新 更多