C# 中 using 块内的 this 关键字
C# 中 using
块内部的 this
指的是什么?
What does this
refer to inside of a using
block in C#?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
C# 中 using
块内部的 this
指的是什么?
What does this
refer to inside of a using
block in C#?
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
using
块内部的this
与using
块外部的this
引用相同的内容:当前实例班级的。using
块应该与实现 IDisposable 接口的所有类一起使用。如果它包装了托管和/或非托管资源,那么它是该类的实现细节。this
inside of ausing
block refers to the same thing asthis
outside of ausing
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.1 - 这始终指的是您当前所在的对象范围,例如
在本例中, 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
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