Я удивлен, что никто не указал, что , если вы знаете, что это будет допустимое значение long
, вы можете изменить поведение компилятора с явным приведением и просто использовать long
.
Это может быть или не быть полезным, в зависимости от условия, которое определяет значение для asInt
, и от того, что вы намереваетесь делать с результатом выражения.Вот пример:
string a = "1234.56";
bool asDouble = a.Contains(".");
var b = asDouble ? (long)Double.Parse(a) : Int64.Parse(a);
Console.WriteLine(b.GetType());
На самом деле, в этом примере вам не нужен условный оператор;это тоже сработало бы:
string a = "1234.56";
var b = (long)Double.Parse(a);
Console.WriteLine(b.GetType());
Другими словами, возможно, что лучшее решение не будет использовать троичный оператор, но вопрос не дает достаточного контекста, чтобы знать.