0

params キーワードを使用して動的パラメーターをメソッドに再渡すと、ソリューションのビルドに失敗します。.NET 4.6 と VS2015 を使用していますが、以前のバージョンの .NET Framework でも問題が発生します。エラー リストにエラーは表示されず、一番下に「ビルドに失敗しました」というメッセージが表示されます。

これは私が実行しようとしているサンプルコードです:

public void MethodWithDynamicParameter(dynamic dyn)
{
    MethodWithParams(dyn); //This fails to build!

    MethodWithParams(new object[] { dyn }); //This compiles!
}

public void MethodWithParams(params object[] objects)
{

}

誰かが最初の呼び出しの何が問題なのか説明できますか?

編集1:

Dave から提供されたサンプルを使用して新しいソリューションを作成しましたが、問題なくビルドできます。しかし、私の解決策では、「閉じて、きれいにして、ビルド」した後でも問題が解決しません。文字列、オブジェクト、ダイナミックなどを渡すかどうかは問題ではありません。以下の画像では、メソッドへの呼び出しはなく、ソリューションはまだビルドされていません。

ここに画像の説明を入力

4

1 に答える 1

0

テストとして次のコードを使用して、新しいコンソール アプリケーションを作成しました。

class Program
{
    static void Main(string[] args)
    {
        // Test with object:
        object x = new object();
        MethodWithDynamicParameter(x);

        // Test with specific type of object, a string:
        MethodWithDynamicParameter("string");

        Console.ReadKey();
    }

    static void MethodWithDynamicParameter(dynamic dyn)
    {
        MethodWithParams(dyn);
        MethodWithParams(new object[] { dyn });
    }

    static void MethodWithParams(params object[] objects)
    {

    }
}

私にとって、プログラムはエラーなしでコンパイルおよび実行されます。

まだ試していない場合は、標準の「すべてのドキュメントを閉じ、すべてを消去し、すべてを再構築する」および/または「Visual Studioを再起動する」ソリューションを提案できますか?


dynamicさらに、コンパイル時まで多くの入力チェックをバイパスするため、theyキーワードが問題の原因になる可能性があります。dynを呼び出す前に、 が宣言される場所からコードをチェックしてみてくださいMethodWithDynamicParameter(dynamic dyn)

于 2016-02-08T20:57:07.317 に答える