【发布时间】:2016-07-25 19:53:50
【问题描述】:
我有一段代码需要声明一个“var”变量,因为类型会根据请求而改变。必须在 try 块内进行此声明以捕获任何异常:
try
{
var calc = (Type1)obj;
var results = calc.Function();
}
catch
{
var calc = (Type2)obj;
var results = calc.Function();
}
finally
{
return results;
}
现在的问题是,“结果”将不起作用,因为范围在 try catch 块之外结束。我无法在 try 之外声明 var,因为我必须检查类型转换并相应地更改类型。
Type1、Type2 是不同的接口,obj 又是“var”,可以有不同的类型。
我什至无法在 try 块之外将 var 初始化为 null。我怎样才能解决这个问题?
【问题讨论】:
-
如果您将
var初始化为null,您希望它是什么类型?var与object和dynamic不同。你真的应该阅读var上的文档,你离理解它还很远。 -
我知道,我不想将其初始化为空。这不是我主要关心的问题。我正在寻找的只是返回“结果”,它可以是数据集,也可以是基于 try 块执行还是 catch 块执行的数据表。
-
var可以混淆你的代码,不要滥用它。如果您提及类型,通常会使您的代码更具可读性和可理解性,如果您使用方法的返回类型,则更是如此。 -
请添加至少 2 个您可能对该方法进行的不同调用的示例,以便我们确定最佳路径