如何在dotnet中将“”解析为long(“0”)

jul*_*old 2 .net c# parsing long-integer

给出以下代码:

string example = "1234";
long parsed_example = long.Parse(example);
Console.Writeline(parsed_example);
# => 1234
Run Code Online (Sandbox Code Playgroud)

效果很好。

以下示例则不然:

string example = "";
long parsed_example = long.Parse(example);
# [System.FormatException: Input string was not in a correct format.]
Run Code Online (Sandbox Code Playgroud)

然而目标是:

string example = "";
if (example == "")
{
    example = "0";
}
long parsed_example = long.Parse(example);
Console.Writeline(parsed_example);
# => 0
Run Code Online (Sandbox Code Playgroud)

有没有更短、更合适的解决方案?上面的代码几乎可以证明一个小函数是合理的,我最好有一个内联解决方案。也许是这样的(伪代码):

string example = "";
long parsed_example = example ?? 0, long.Parse(example);
Run Code Online (Sandbox Code Playgroud)

Mar*_*ell 7

long parsed_example = example == "" ? 0 : long.Parse(example);
Run Code Online (Sandbox Code Playgroud)

但是:不要沉迷于单行解决方案;多行解决方案通常更具可读性和正确性。创建复杂代码没有奖励。您可能还希望查看string.IsNullOrWhiteSpacelong.TryParse等。例如:

long value;
if (string.IsNullOrWhiteSpace(example))
{
    // what you want to do with blank/empty values
    value = 42;
}
else if (!long.TryParse(example, out value))
{
    // what you want to do with non-integer values 
   value = 84;
}
Run Code Online (Sandbox Code Playgroud)