私はこれと同等の2つの方法を持っています(不自然な例を許してください):
public void WithResource(Action<Resource> action) {
using (var resource = GetResource()) {
action(resource);
}
}
public void Test() {
int id;
SomeObject someObject;
WithResource((resource) => {
id = 1;
someObject = SomeClass.SomeStaticMethod(resource);
});
Assert.IsNotNull(someObject);
Assert.AreEqual(id, someObject.Id);
}
(私が取り除こうとしている WithResource 呼び出しには、さらにいくつかのロジックがあります。)
Use of unassigned local variable
アサーションが割り当てられていない変数を使用しているため、コンパイル時にエラーが発生します。私は現在、それらに-1とnull
それぞれを割り当てることで問題を回避しています。
に初期化するのnull
は悪くありませんが、そこに -1 を入れるのは避けたいです...コンパイラに「私を信じてください、これは初期化されます」と伝えたいです。これはテストなので、実際に爆撃されてもあまり気にしません。それは、テストを修正する必要があることを意味するだけだからです。
コンパイラにそのヒントを与える方法があるかどうか尋ねたくなりますが、それはさらに醜い気がします。そのようなヒントは存在しますか、それとも今行っているように変数を初期化する必要がありますか?