次のようなコードを使用して、フレームワーク 3.5 をターゲットとする Visual Studio 2010 のプロジェクトがあります。
public class Test {
private object _field;
private Action defaultAction = null;
public Test(Action a)
{
defaultAction = a;
}
public Test()
: this(() => { _field = new object(); })
{
}
}
- VS からプロジェクトをコンパイルすると、11 行目でコンパイル エラーが報告されます。
- 「C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe Test.sln」を使用してコマンド ラインからプロジェクトをコンパイルすると、正常にコンパイルされます。
実際、このコードは VS2008 でコンパイルされますが、フレームワーク 3.5 をターゲットとする VS2010 ではコンパイルされません。
何が起こっているかについて何か考えはありますか?
アップデート
V2010 のコードを修正するために、次のように変更しました (これは元のコードと同等です)。
public class Test {
private object _field;
private Action defaultAction = null;
public Test(Action a)
{
defaultAction = a;
}
public Test()
{
defaultAction = () => {_field = new object();}
}
}
しかし、心配なのは、Visual Studio がフレームワーク 4.0 でコードをコンパイルしているため、顧客の環境 (フレームワーク 3.5) にアプリケーションを展開するときに、他のエラーが発生する可能性があることです。