我不熟悉以下语法,我想知道变量退出大括号后会发生什么:
public string method(int projectid)
{
string result = string.empty;
var service = _service;
{
result = service.dosomething(); //_service implements it's own Dispose
}
result += "we are going to do some further operations like sum a large list that"
result += "might take a non-trivial amount of time."
return result;
}
_service: {/* etc */}
后面的括号表示服务变量仅在 .dosomething()
方法的范围内,并且之后在执行由 result +=
block 指示的 X 操作时 - 垃圾收集器是否可以将服务四舍五入并对其进行垃圾收集?
基本上,我想知道围绕 var result = service.dosomething()
的括号告诉编译器如何处理 service
和 _service
。
最佳答案
它对 service
或 _service
没有影响。
我的猜测(基于评论)是这段代码以前看起来像
public string method(int projectid)
{
string result = string.empty;
using (var service = _service)
{
result = service.dosomething();
}
result += "we are going to do some further operations like sum a large list that"
result += "might take a non-trivial amount of time."
return result;
}
并且有人发现在 using 处理对象后通过 _service
使用该对象,并通过删除 using
并添加分号和注释来“修复”该错误说明为什么 service
没有在这里处理,留下大括号作为旧版错误版本的无用痕迹。
注意:为了公平起见,也许它最初是使用 (var service = GetService())
并且有人决定重用服务实例,将代码变成上面显示的错误版本,然后演变为当前版本。
关于c# - 变量声明后的括号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26406139/