我有一个返回类型为IEnumerable<T>
的方法,我需要在变量中捕获此方法的输出。我不能使用var来声明变量,因为变量必须在我的try / catch块之外声明。那么,我可以使用什么具体的Type来声明我的变量,它将接受我的方法的IEnumerable<T>
输出?以下是此方案的样子:
IEnumerable<string> CalleeMethod() {...}
IEnumerable<string> CallerMethod()
{
List<string> temp = null;
try
{
temp = CalleeMethod();
}
catch(Exception exception)
{
Debug.WriteLine(exception.GetBaseException().Message);
}
return temp;
}
此示例不起作用,因为当我将temp
声明为List<T>
时,我收到错误:cannot convert IEnumerable<T> to List<T>
。我知道我可以调用.ToList()
,或者将CalleeMethod()
的输出转换为List<T>
,但我想简单地定义temp
变量,其具有可以保存的IEnumerable<T>
变量CalleeMethod()
的{{1}}输出,无需投出。{1}}那么,我可以将temp
声明为具体类型,因为它不会引发cannot convert...
错误?
提前感谢您的帮助!
答案 0 :(得分:3)
您是否尝试过IEnumerable<String>
?
答案 1 :(得分:0)
只需使用IEnumerable<string> temp = Enumerable.Empty<String>();
答案 2 :(得分:0)
@hvd是正确的。我认为你有一些概念。 &#39; IEnumerable T&#39;是不同的&#39; IEnumerable字符串&#39;。这是一个简单的通用版本......
public class GenericTest
{
public IEnumerable<T> CalleeMethod<T>() where T : class
{
return new List<T>();
}
}
[TestMethod]
public void IEnumberableT()
{
var x = new GenericTest();
IEnumerable<string> result = x.CalleeMethod<string>();
}