【发布时间】:2012-12-13 22:23:11
【问题描述】:
我喜欢对几乎所有内容都使用隐式类型,因为它简洁明了。但是,当我需要在单个语句周围包装 try...catch 块时,我必须打破隐式类型以确保变量具有定义的值。这是一个人为的假设示例:
var s = "abc";
// I want to avoid explicit typing here
IQueryable<ABC> result = null;
try {
result = GetData();
} catch (Exception ex) { }
if (result != null)
return result.Single().MyProperty;
else
return 0;
有没有一种方法可以调用GetData() 进行异常处理,但不必显式定义结果变量的类型? GetData().NullOnException() 之类的东西?
【问题讨论】:
-
你的意思是要添加扩展方法?
-
@tia:我只是想这可能是实现它的一种方式。理想情况下,我希望能够在处理异常时说
var result = GetData()。 -
一个“愚蠢”的解决方案是在同一个地方声明
result,在try之前,就像这样:var result = (IQueryable<ABC>)null;但是这比你输入的更多有。只有当局部变量没有被分配到声明它的同一行时,才绝对不可能使用var。
标签: c# .net try-catch implicit-typing