【发布时间】:2018-08-27 06:00:48
【问题描述】:
我有一个var 结果为try/catch。我想使用try/catch 块之外的结果,但我不能在try 块之前声明,因为var 在运行时获取类型。可以吗?
public long getConfigVal<T>( int key, ref T sResult)
{
var myValue;
try
{
myValue = (from el in keyValueList
select (string)el.Attribute("value").Value).FirstOrDefault();
}
catch (Exception ex)
{
}
if (sResult is string)
sResult = (T)(object)myValue;
if (sResult is int)
sResult = (T)(object)int.Parse(myValue);
if (sResult is DateTime)
sResult = (T)(object)DateTime.Parse(myValue);
}
或者有什么方法可以在块外使用myValue?
【问题讨论】:
-
你的意思是
el.Value是匿名类型的? -
可以是:int、string或dateTime
-
怎么样?是
dynamic吗?object?没有“int、string 或 DateTime”这样的类型。 -
作品,Evk! , 也许你想回答,所以我会接受这个答案?
-
myValue总是不是string吗?它必须是,否则您无法将其传递给 Parse 方法。T可能会改变,但myValue的编译时间类型不会