C # имеет условный оператор и операторы IF, и я предположил, что условный оператор будет просто синтаксическим сахаром. Таким образом, во время компиляции он будет иметь то же самое, что и операция IF.
Однако они не имеют (см. ниже) различных IL. Попытка обернуть голову вокруг него и предположение, что это оптимизация производительности, которую получает условный оператор, потому что это ограниченный объем.
Хотелось бы знать, правильно ли мое предположение или нет, и, может быть, есть ли в этом больше?
Также в IL ПЧ есть некоторые проверки (L_000c, L_000d, L_000f) вокруг значений int, которые я не могу понять значение. Это то, что заставило меня думать, что это более надежное решение, за счет производительности из-за большего объема IF.
Код для IF
var result = "";
if (Environment.Is64BitOperatingSystem)
{
result = "Yes";
}
else
{
result = "No";
}
Console.WriteLine(result);
Код условного оператора (я осознаю различия, но как бы я его ни менял - присваиваю переменной и т.д. очень мало разницы)
Console.WriteLine("Is the OS x64? {0}", Environment.Is64BitOperatingSystem ? "Yes" : "No");
IL для IF
L_0001: ldstr ""
L_0006: stloc.0
L_0007: call bool [mscorlib]System.Environment::get_Is64BitOperatingSystem()
L_000c: ldc.i4.0
L_000d: ceq
L_000f: stloc.2
L_0010: ldloc.2
L_0011: brtrue.s L_001d
L_0013: nop
L_0014: ldstr "Yes"
L_0019: stloc.0
L_001a: nop
L_001b: br.s L_0025
L_001d: nop
L_001e: ldstr "No"
L_0023: stloc.0
L_0024: nop
L_0025: ldloc.0
L_0026: call void [mscorlib]System.Console::WriteLine(string)
IL для условного
L_002c: ldstr "Is the OS x64? {0}"
L_0031: call bool [mscorlib]System.Environment::get_Is64BitOperatingSystem()
L_0036: brtrue.s L_003f
L_0038: ldstr "No"
L_003d: br.s L_0044
L_003f: ldstr "Yes"
L_0044: call void [mscorlib]System.Console::WriteLine(string, object)
-121--1489511-
При работе с исходным кодом ГИС часто нужно писать кортежи координат широты и долготы.
Например. в Google Maps ссылки (123, 456):
Что является предпочтительным порядком (и почему?)
широта, долгота
долгота, широта
Я видел как используется в различных системах, и я надеюсь найти некоторые доказательства, чтобы придерживаться другой.