dbs*_*bss 0 c# scope var try-catch-finally
我是一个新手,并试图回到编程游戏.对不起我的无知和缺乏知识.
我试图在下面的代码中看到如何修复返回类型错误消息.我知道我可以使用显式数据类型在try块之外定义变量,但可以为'var'或任何其他建议完成.
private IEnumerable GetDirFiles(String location)
{
try
{
//Search all directories for txt files
var emailfiles = Directory.EnumerateFiles(location, "*.txt", SearchOption.AllDirectories);
}
catch(Exception ex)
{
Console.WriteLine("Message for admins: " + ex.Message);
}
finally
{
textBox1.Clear();
var emailfiles = Directory.EnumerateFiles(location, "*.msg", SearchOption.AllDirectories);
}
return emailfiles;
}
Run Code Online (Sandbox Code Playgroud)
错误消息是"当前上下文中不存在emailfiles",我理解为什么因为它是在try块中定义的.
谢谢.
是的,您需要在块外声明emailFiles,并且var不会有效(没有一些体操).
var需要赋值,因为它使用隐式类型.如果没有值,则无法从中获取类型.
你唯一的另一种选择是return来自try和catch块,而不是在方法的最后.
正如@AdamVincent所说,你有一个更大的问题; 这是因为finally块总是执行(无论异常或缺少),返回值实际上总是如此Directory.EnumerateFiles(location, "*.msg", SearchOption.AllDirectories).你可能意味着要进入catch街区.
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |