【发布时间】:2021-10-13 13:22:56
【问题描述】:
我不想拥有超深的嵌套块,所以在变量初始化可能出错的情况下,我更愿意这样做:
try
{
var foo = GetFoo();
}
catch (FooException)
{
Console.Write(...);
throw;
}
var bar = GetBar(foo);
当然它不会编译。我不允许在初始化它的 try-block 之外使用foo。
在我看来,将完整的类型规范放在块的正上方也很糟糕:
FooType foo;
try
{
foo = GetFoo();
}
catch (FooException)
{
Console.Write(...);
throw;
}
var bar = GetBar(foo);
即使在不太极端的情况下,例如 int foo = 0;,它已经感觉很脏,尤其是在未使用的初始值令人困惑的情况下。 catch 块无论如何都会退出程序。
我如何尝试初始化一个变量并在该范围之外使用它,以最少的重复和最少的字符输入?
为什么我认为我不喜欢提升变量声明的解决方案:
我更喜欢避免类型化的变量声明。我不喜欢重复。我不喜欢变量声明与其初始化之间的脱节。我不喜欢设置未使用的初始值。最后两点可能来自与违反不变性的潜意识关联;我倾向于在概念上喜欢尽可能多的变量 readonly 并且单独声明和初始化与该模式相矛盾。
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c#