c# - 变量声明后的括号

标签 c# .net

我不熟悉以下语法,我想知道变量退出大括号后会发生什么:

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/

相关文章:

c# - 将小数值四舍五入到最接近的 0.01?

c# - 多对多关系插入

.NET 应用程序试图访问 crl.verisign.net

c# - 如何从序列中间切掉一些元素?

c# - 在同一个实体User中添加ICollection User

c# - 以编程方式为 WCF (NetTcpBinding) 指定自定义授权

c# - 使用 C# 在 Mac 中获取用户/共享文件夹

c# - 在属性名称前加上一些字符 - JSON 序列化

c# - System.net,mono 和 .Net 之间的 httpPOST 兼容性

.net - 使用 NHibernate 缓存多个数据库的 SessionFactory 和配置