我想知道如果我需要在其自己的using()标签内重新设置一个变量,那么行为是什么(以及它是否定义了)?
我有一个实际的用例,使用SharpDX我有我想要在渲染循环外面声明的变量(用于每个帧),我理想地将其包装为using(thevariable){MainLoop{}};
但是,如果发生某些事情(用户调整大小),则可能需要处理该变量。重新初始化。我在样本中看到它被初始化为null&然后在循环中重新初始化,如果需要,重新处理,然后在循环之后再次处理,这看起来比使用得好,使用语句,所以我想知道代码的行为会是什么样的:
void Main()
{
using(var MyDisposable = new MyDisposable())
{
If(SomeCondition)
{
MyDisposable.Dispose() // Do i need to call this? Or is it auto called thanks to using when leaving the block? What will using call dispose on, the object that MyDisposable refers to, or the one it refered to back when i called the using statement?
MyDisposable = new MyDisposable(); // Is this going to be managed by the using block? Is this even valid?
}
}
}
此外,我不确定行为会随着时间的推移而改变,我假设没有,但如果确实如此,我对.net 4.5的答案感兴趣
答案 0 :(得分:2)
我认为你会发现这会导致编译错误..具体来说:
无法分配给'MyDisposable',因为它是'使用变量'
所以,你的问题的答案是:在这种情况下没有任何事情发生。您的代码将无法编译。