C# 中 using 块内的 this 关键字

发布于 2024-12-06 19:36:11 字数 60 浏览 1 评论 0原文

C# 中 using 块内部的 this 指的是什么?

What does this refer to inside of a using block in C#?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

红颜悴 2024-12-13 19:36:11

using 块内部的 thisusing 块外部的 this 引用相同的内容:当前实例班级的。

using 块应该与实现 IDisposable 接口的所有类一起使用。如果它包装了托管和/或非托管资源,那么它是该类的实现细节。

this inside of a using block refers to the same thing as this outside of a using block: the current instance of the class.

A using block should be used with all classes that implement the IDisposable interface. It's an implementation detail of the class if it wraps managed and/or unmanaged resources.

眼眸里的那抹悲凉 2024-12-13 19:36:11

1 - 这始终指的是您当前所在的对象范围,例如

void myFunc(int sameName)
{
    this.sameName += sameName;
}

在本例中, this.sameName 指的是名为 SameName 的类变量,而没有 this 限定符的变量指的是局部变量(如果您有本地/全局变量,则使用相同的名称或为了清楚起见)。

2 - 非托管资源是套接字、httpserver、连接、文件缓冲区等...任何 IDisposable 的资源(不会像持久连接或某些 GUI 元素(如无模式表单等)自动 GC)

3 - 技术上是的,如果您没有显式调用 File.Close() 或将其放在 using 语句中,那么您对文件所做的更改可能不会刷新回光盘,因此如果您打开了文件缓冲区,则应始终调用 Close()在它上面。

编辑:你可以忽略 2 和 3,因为他将它们从问题中删除了,但我将它们留在这里以防万一

1 - this always refers to the object scope you are currently in for example

void myFunc(int sameName)
{
    this.sameName += sameName;
}

in this case this.sameName refers to the classes variable called sameName while the one without the this qualifier refers to the local variables (use in case you have local/globals with the same name or for clarity).

2 - Unmanaged resources are sockets, httpservers, connections, filebuffers, etc.... Anything that is IDisposable (that isn't automatically GC'ed like persistent connections or some GUI elements like Modeless forms etc...)

3 - technically yes, if you don't explicity call File.Close() or place it within a using statement then the changes you made to the file may not get flushed back to disc so if you have a file buffer open you should always call Close() on it.

EDIT: You can ignore 2 and 3 since he removed them from the question but I'll leave them here just in case

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文