更新 : 2007 年 11 月
エラー メッセージ
'識別子': volatile フィールドへの参照は、volatile として扱われません。
通常、volatile フィールドを、ref パラメータや out パラメータで渡すことはしません。これらのパラメータは、関数のスコープ内では volatile として扱われないためです。ただし、インタロック API を呼び出す場合など、この規則には例外があります。意図的に volatile フィールドを参照パラメータとして使用する場合は、他の警告と同様、#pragma warning を使って警告を無効にできます。
次の例では CS0420 エラーが生成されます。
// CS0420.cs
// compile with: /W:1
using System;
class TestClass
{
private volatile int i;
public void TestVolatile(ref int ii)
{
}
public static void Main()
{
TestClass x = new TestClass();
x.TestVolatile(ref x.i); // CS0420
}
}