23
動的パラメータを持つ場合、コンパイラは戻り値の型を破棄して動的だと思うようです。例えば動的パラメータは、コンパイラにメソッドの戻り値が動的であると考えるようにします。
:
public MethodResult IsValid(object userLogin)
{
return new MethodResult();
}
あなたはと思うだろう:
var isValidResult = IsValid(someObject());
が
dynamic -> MethodResult
として読み取る必要がありますが、それはそれがあると考えている:
dynamic -> dynamic
シグネチャに動的パラメータを追加すると、コンパイラは戻り値が強く型付けされているにもかかわらず、戻り値を知ることを完全に停止しますか?
詳細については、[MSDN - ダイナミック型の使用](http://msdn.microsoft.com/en-us/library/dd264736.aspx)を参照してください。 - "オーバーロードの解決は、コンパイル時ではなく実行時に発生しますメソッド呼び出しの引数の型がdynamic型であるか、またはメソッド呼び出しの受信者が型の動的型である場合に発生します。 - その結果、ランタイムまでにどのメソッドが呼び出されるかはわかりません。 –