gpt4 book ai didi

c# - 使用花括号的 block 。这是正确的 C# 语法吗?它有什么作用吗?

转载 作者:行者123 更新时间:2023-11-30 13:20:16 25 4
gpt4 key购买 nike

我正在阅读别人的代码,我看到了很多这样的例子。我会提供一个片段。它是一个库函数,它包装了 nHibernate。这是第五行,创建 session 后我感到困惑。

public T GetById<T>(string id) where T : BaseObject
{
T retObj = null;
ISession session = EnsureCurrentSession();
{
retObj = session.Get<T>(id);
}

return retObj;
}

乍一看以为是using语句的例子,其实不是。据我所知,大括号也可能不存在。在那里设置 block 的唯一实际目的是在内部创建变量并将它们的范围限制在 block 内,但这不会发生在这里。

还是我遗漏了什么?

最佳答案

该代码看起来像是一个不完整的编辑;该代码是合法的但很奇怪。

跟进您的声明:

The only practical purpose for setting up a block there would be to create variables inside and their scope be limited to the block

这是创建区 block 的一个实际目的,但不是唯一目的。例如:

class C
{
public int x;
void M()
{
x = 123;
if (whatever)
{
int x = q;
}
}
}

此代码不合法​​,因为在第一个使用它的 block 中使用的简单名称 x 不一致。 x 表示 this.x首先,然后是局部变量。这在 C# 中是不合法的;在 C# 中,名称可能只代表一件事,贯穿于首先使用该名称的 block 中。

您可以通过...“解决”问题

class C
{
public int x;
void M()
{
{
x = 123;
}
if (whatever)
{
int x = q;
}
}
}

因为现在使用相同名称来表示两个不同事物的两个 block 不会以任何方式重叠。但这是解决问题的愚蠢方法;更好的做法是重命名本地

关于c# - 使用花括号的 block 。这是正确的 C# 语法吗?它有什么作用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9390068/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com