C# 缩短“的代码”;“如果,否则”;功能

C# 缩短“的代码”;“如果,否则”;功能,c#,C#,我有一个最大值为“9”的滑块。每个值都应改变标签的文本。 我现在只能想到这个方法: private void Slider_Scroll(object sender, EventArgs e) { if (Slider.Value == 0) { Label.Text = "Text1"; } else if (Slider.Value == 1) { Label.Text = "Te

我有一个最大值为“9”的滑块。每个值都应改变标签的文本。 我现在只能想到这个方法:

private void Slider_Scroll(object sender, EventArgs e)
{
    if (Slider.Value == 0)
        {
            Label.Text = "Text1";
        }
    else if (Slider.Value == 1)
        {
            Label.Text = "Text2";
        }
    //...and so on...
}

是否有一种方法可以用较短的方式完成此操作?

使用
开关…Case
而不是
if..else

private void Slider_Scroll(object sender, EventArgs e)
{
    var text = string.Empty;
    Switch(Slider.Value)
    {
         case 0:
          text = "text1";
         break;
         case 1:
          text = "text2";
         break;
         //....go on  
    }

     Label.Text = text;
}
或;使用字典:

static readonly Dictionary<int,string> labels = new Dictionary<int,string> {
    {0, "Text1"},
    {1, "Text2"}
};
如果需要在运行时根据配置查找文本(即,它们不是硬编码的),字典方法尤其有用

如果值是连续整数(0到9等),则还可以使用
字符串[]

Label.Text=“Text”+(1+Slider.Value)。ToString()

如果其为nt,则默认值始终为:

static reaonly Dictionary<int,string> labelMap = new Dictionary<int,string> {
    {0, "Text1"}, {1, "Text2"}, {1, "TextValue3"}
};

if(labelMap.ContainsKey(Slider.Value))
{
Label.Text = string.Format("Text{0}",labelMap [Slider.Value]);
}
else
{
Label.Text=<defaut_value>; //or throw exception etc..
}
static reaonly Dictionary labelMap=新字典{
{0,“Text1”},{1,“Text2”},{1,“TextValue3”}
};
if(labelMap.ContainsKey(Slider.Value))
{
Label.Text=string.Format(“Text{0}”,labelMap[Slider.Value]);
}
其他的
{
Label.Text=;//或引发异常等。。
}

扩展滑块并向其添加名称属性

Label.Text = Slider.Name;

为什么不定义一个值数组并直接索引到这个数组中呢

private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};

private void Slider_Scroll(object sender, EventArgs e)
{
    Label.Text = values[Slider.value];
}
您可以使用
列表
并使用
滑块对其进行索引。值

List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };

Label.Text = list[Slider.Value];
List List=newlist();

Label.Text=list[Slider.Value]我会使用数组:

string SliderLabels[] = {"Text1"
                         , "Text2"
                         , "Text3"
                         , "Text4"
                         , "Text5"
                         , "Text6"
                         , "Text7"
                         , "Text8"
                         , "Text9"};

private void Slider_Scroll(object sender, EventArgs e)
{
    if ( Slider.Value <   SliderLables.length )
    {
       Label.Text = SliderLabels[ SliderValue ];
    }

}
string滑块标签[]={“Text1”
,“文本2”
,“Text3”
,“Text4”
,“文本5”
,“Text6”
,“文本7”
,“Text8”
,“Text9”};
私有无效滑块\u滚动(对象发送器、事件参数e)
{
if(Slider.Value
请原谅打字错误或小的语法错误,我手头没有我的VS


马里奥

你试过切换语句吗?没有。正如我所说,我当时只能想到所展示的方法。我对C#还是相当陌生。虽然我只是举了个例子,但这并不是我想要的。实际上我想把文本中的每一个值都改成其他值。我认为“文本”+数字只是概念,真正的字符串是其他值。如果不是,你的答案可能是最好的:)这是一个非常好的解决方案,现在就用这个。谢谢你的快速回答!
private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};

private void Slider_Scroll(object sender, EventArgs e)
{
    Label.Text = values[Slider.value];
}
List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };

Label.Text = list[Slider.Value];
string SliderLabels[] = {"Text1"
                         , "Text2"
                         , "Text3"
                         , "Text4"
                         , "Text5"
                         , "Text6"
                         , "Text7"
                         , "Text8"
                         , "Text9"};

private void Slider_Scroll(object sender, EventArgs e)
{
    if ( Slider.Value <   SliderLables.length )
    {
       Label.Text = SliderLabels[ SliderValue ];
    }

}