对于某些单元测试,我想将CurrentCulture设置为特定的文化(然后在以后反转这些更改)。因为我需要在几个地方这样做,所以我正在考虑编写一个CultureChanger类来保存旧文化并在其构造函数中设置新文化,然后在处置过程中重置旧文化。
然后我可以像这样使用它:
using(new CultureChanger(culture)){
//some code and assertions with no references to the CultureChanger
}
如果我这样做,是否有可能在使用区块完成之前的某个时间清理CultureChanger?
答案 0 :(得分:6)
CultureChanger
阻止“完成”之后, using
才会得到清理。
using
块以与方法相同的方式定义对象的范围。
在 时,无法保证在块执行后对象将被垃圾收集,但之前不会发生。
答案 1 :(得分:1)
using statement提供了一种方便的语法,可确保正确使用IDisposable对象。
using语句以正确的方式调用对象上的Dispose方法,并且(如前所示使用它时)一旦调用Dispose,它也会导致对象本身超出范围。在using块中,该对象是只读的,不能修改或重新分配。
using语句确保即使调用Dispose也会调用 在对象上调用方法时发生异常。
答案 2 :(得分:1)
CultureChanger实例将在整个using块中保持“活动”状态,并且它的Dispose方法将在使用statemnet的结束大括号'}'上调用。所以你回答的问题是:没有风险可以让CultureChanger得到清理。