是否存在我应该(或不应该?)使用"使用"块的特定情况:
using(SomeType t = new SomeType()){
...
}
Run Code Online (Sandbox Code Playgroud) 因此,当退出using块时,using语句会自动调用正在"使用"的对象上的dispose方法,对吗?
但这何时有必要/有益?
例如,假设您有这种方法:
public void DoSomething()
{
using (Font font1 = new Font("Arial", 10.0f))
{
// Draw some text here
}
}
Run Code Online (Sandbox Code Playgroud)
是否有必要在此处使用using语句,因为该对象是在方法中创建的?当方法退出时,不会丢弃Font对象?
或者在方法退出后,Dispose方法是否会在另一个时间运行?
例如,如果方法是这样的:
public void DoSomething()
{
Font font1 = new Font("Arial", 10.0f);
// Draw some text here
}
// Is everything disposed or cleared after the method has finished running?
Run Code Online (Sandbox Code Playgroud) 假设我有以下内容:
using(var ctx = DataContextFactory.Create(0))
{ ... Some code ... }
Run Code Online (Sandbox Code Playgroud)
为什么不做以下操作而失去几个花括号?:
var ctx = DataContextFactory.Create(0);
ctx.Dispose();
Run Code Online (Sandbox Code Playgroud)
感谢您的建议!
我想知道如果using我执行一个return或throw操作,语句中创建的对象是否被处置.示例如下.
using(SomeClass thing = new SomeClass())
{
...
if(condition)
return;
...
}
Run Code Online (Sandbox Code Playgroud)
上面会混淆或者GC在这里被信任吗?
我读了这篇文档,但我仍然感到困惑.
using (Font font1 = new Font("Arial", 10.0f))
{
byte charset = font1.GdiCharSet;
}
Run Code Online (Sandbox Code Playgroud)
在代码中,是否意味着我们引入了一个名为Font类的新实例font1.但是,此实例仅在大括号内存活.在代码中我们可以再次实例化,font1但这将是一个完全不同的实例,因为前一个font1是disposed.
它是否正确?那么目的是什么?我们可以重新分配不同的值font1而不处理前一个值?