- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
for (int i = 0; i < 4; i++)
{
if (!UseParam[i])
{
switch (i)
{
case 0:
if (AutoCalc || XtraMessageBox.Show("Неверные показания амперметра " + PS1_DeviceName_A.Text + " " + PS1.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
I1 = (CorrectValue[i] ?? 0) * 1000;
else
I1 = GetCorrectElectricValue(CorrectKm[1] ?? 0, "I0_A", row["N"], row["M"]) * 1000;
I0_A.ErrorText = PS1_A.ErrorText = "Показание " + PS1_DeviceName_A.Text + " исключено из расчета";
}
break;
case 1:
if (AutoCalc || XtraMessageBox.Show("Неверные показания вольтметра" + PS1_DeviceName_B.Text + " " + PS1.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
U1 = (CorrectValue[i] ?? 0) * 1000;
else
U1 = GetCorrectElectricValue(CorrectKm[0] ?? 0, "U0_A", row["N"], row["M"]) * 1000;
U0_A.ErrorText = PS1_B.ErrorText = "Показание " + PS1_DeviceName_B.Text + " исключено из расчета";
}
break;
case 2:
if (AutoCalc || XtraMessageBox.Show("Неверные показания амперметра" + PS2_DeviceName_A.Text + " " + PS2.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
I2 = (CorrectValue[i] ?? 0) * 1000;
else
I2 = GetCorrectElectricValue(CorrectKm[3] ?? 0, "I0_B", row["N"], row["M"]) * 1000;
I0_B.ErrorText = PS2_A.ErrorText = "Показание " + PS2_DeviceName_A.Text + " исключено из расчета";
}
break;
case 3:
if (AutoCalc || XtraMessageBox.Show("Неверные показания вольтметра" + PS2_DeviceName_B.Text + " " + PS2.Text + "\nИслючить из расчета?", "Проверка показаний", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{
if (CorrectKm[i] == 0 || CorrectKm[i] == L)
U2 = (CorrectValue[i] ?? 0) * 1000;
else
U2 = GetCorrectElectricValue(CorrectKm[2] ?? 0, "U0_B", row["N"], row["M"]) * 1000;
U0_B.ErrorText = PS2_B.ErrorText = "Показание " + PS2_DeviceName_B.Text + " исключено из расчета";
}
break;
}
}
}
__construct 16.02.2012 03:53 # 0
absolut 16.02.2012 09:40 # 0
wvxvw 16.02.2012 12:31 # +5
Жаль, что с тремя вопросительными знаками подряд не компилируется...
abatishchev 16.02.2012 14:47 # 0
ICELedyanoj 16.02.2012 15:04 # 0
abatishchev 16.02.2012 15:36 # 0
ICELedyanoj 16.02.2012 16:32 # 0
object t = null;
object t1 = t ?? 0;
Прекрасно компилируется и работает.
Boxing/unboxing еще никто не отменял.
На 90% уверен, что CorrectValue = ArrayList.
5% на то, что object[].
abatishchev 16.02.2012 16:38 # 0
сравнивать с 0 (или неким числом) L имеет смысл только int[i],
либо это таки б-гомерзский ArrayList, внутри которого всё так же int
ICELedyanoj 16.02.2012 16:47 # 0
Как-бы по общему уровню кода не сказал бы, что автор дорос до использования Nullable.
К этому коду ближе по духу использование object.
Хотя в таком случае использование результата ?? в качестве аргумента при вызове метода говорило бы о том, что аргументы тоже object, что вообще печально.
Не знаю :)
В общем топикстартер поучавствовал в загадывании загадки не меньше, чем автор кода. Хоть бы пару слов о типах используемых переменных и аргументов.
wvxvw 16.02.2012 15:21 # 0
abatishchev 16.02.2012 15:37 # 0
х as Т? возвращает либо Т либо null
а оператор ?: ожидает слева bool.
wvxvw 16.02.2012 16:54 # 0
wvxvw 16.02.2012 17:05 # 0
Или так :) Было бы желание.