Как можно укоротить метод? с#
private void button1_Click(object sender, EventArgs e)
{
double x = double.Parse(textBox1.Text);
int fst = comboBox1.SelectedIndex;
int scn = comboBox2.SelectedIndex;
switch (fst)
{
case 0:
switch (scn)
{
case 0:
label1.Text = x.ToString();
break;
case 1:
label1.Text = (x / 1000).ToString();
break;
case 2:
label1.Text = (x / 1000000).ToString();
break;
case 3:
label1.Text = (x * 1000).ToString();
break;
case 4:
label1.Text = (x * 0.00220462).ToString();
break;
}
break;
case 1:
switch (scn)
{
case 0:
label1.Text = (x * 1000) .ToString();
break;
case 1:
label1.Text = x.ToString();
break;
case 2:
label1.Text = (x / 1000).ToString();
break;
case 3:
label1.Text = (x * 1000000).ToString();
break;
case 4:
label1.Text = (x * 2.20462).ToString();
break;
}
break;
case 2:
switch (scn)
{
case 0:
label1.Text = (x * 1000000).ToString();
break;
case 1:
label1.Text = (x * 1000).ToString();
break;
case 2:
label1.Text = x.ToString();
break;
case 3:
label1.Text = (x * 1000000000).ToString();
break;
case 4:
label1.Text = (x * 2204.62).ToString();
break;
}
break;
case 3:
switch (scn)
{
case 0:
label1.Text = (x / 1000).ToString();
break;
case 1:
label1.Text = (x / 1000000).ToString();
break;
case 2:
label1.Text = (x / 1000000000).ToString();
break;
case 3:
label1.Text = x.ToString();
break;
case 4:
label1.Text = (x * 0.00000220462).ToString();
break;
}
break;
case 4:
switch (scn)
{
case 0:
label1.Text = (x * 453.59).ToString();
break;
case 1:
label1.Text = (x * 0.45359).ToString();
break;
case 2:
label1.Text = (x * 0.00045359).ToString();
break;
case 3:
label1.Text = (x * 453590).ToString();
break;
case 4:
label1.Text = x.ToString();
break;
}
break;
}
}
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Наверное, сейчас можно ещё проще списки инициализировать, я точно не помню, но суть примерно такая:
var data = new List<List<double>>
{
new List<double>{ 1, 1.0/100, 1.0/1000000, ... },
new List<double>{ 1000, 1, 1.0/1000, ... },
...
};
label1.Text = (x * data[fst][scn]).ToString();
Только инициализация списков и одна строчка кода, никакой лишней копипасты. Если очень хочется, можно вообще данные в json поместить и оттуда забирать, тогда ещё компактнее наверное будет.