缩短“;如果“否则”;功能
本文关键字:功能 如果 缩短 否则 | 更新日期: 2023-09-27 18:05:59
我有一个最大值为"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...
}
有没有一种方法可以用更短的方式做到这一点?
switch(Slider.Value) {
case 0: Label.Text = "Text1"; break;
case 1: Label.Text = "Text2"; break;
}
或;使用字典:
static readonly Dictionary<int,string> labels = new Dictionary<int,string> {
{0, "Text1"},
{1, "Text2"}
};
和:
string text;
if(labels.TryGetValue(Slider.Value, out text)) {
Label.Text = text;
}
如果您需要在运行时根据配置查找文本(即它们不是硬编码的(,那么字典方法尤其有用。
如果值是连续整数(0到9等(,也可以使用string[]
。
为什么不定义一个值数组并直接索引到此数组?
private String[] values = new String[9] {"Value1", "Value2", ... , "Value9"};
private void Slider_Scroll(object sender, EventArgs e)
{
Label.Text = values[Slider.value];
}
扩展滑块并添加Name属性。
Label.Text = Slider.Name;
您可以使用List<string>
并使用Slider.Value
:对其进行索引
List<string> list = new List<string>() { "Text1", "Text2", ... , "TextN" };
Label.Text = list[Slider.Value];
使用Switch...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;
}
Label.Text = "Text" + (1 + Slider.Value).ToString()
Label.Text = string.Format("Text{0}",Slider.Value+1);
如果它的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..
}
我会使用一个数组:
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 ];
}
}
请原谅拼写错误或小的语法错误,我手头没有VS。
hth
马里奥