public TResponse ExecuteCustomMessage<TResponse>(IModbusMessage request)
where TResponse : IModbusMessage, new()
上記の意味は?以前は何も見たことがありませんでしたが、私はC#で数年前からコーディングしていましたが...関数であるはずですが、これは何であるか分かりません<>とwhereとnew()最後に...C#の構文:ここで、TResponse、new()
public TResponse ExecuteCustomMessage<TResponse>(IModbusMessage request)
where TResponse : IModbusMessage, new()
上記の意味は?以前は何も見たことがありませんでしたが、私はC#で数年前からコーディングしていましたが...関数であるはずですが、これは何であるか分かりません<>とwhereとnew()最後に...C#の構文:ここで、TResponse、new()
IModbusMessageインタフェースを実装し、パラメータのないコンストラクタを持つTResponseジェネリック型のconstraintです。 (インターフェース名)型引数があるか 指定されたインタフェースを実装しなければならない:T
。複数のインタフェース制約を指定できます。 制約インターフェイスは汎用でもあります。
T:new() type引数には、パブリックパラメータなしの コンストラクタが必要です。他の制約と組み合わせて使用する場合は、最後にnew()制約を指定する必要があります( )。
また、他の人も指摘しているように、私はジェネリックスのドキュメント(コメントのSLaksが指している)を読むことをお勧めします。
あなたの答えを理解するためには、OPに必要な知識があるのかどうか疑問です。 – ChaosPandion
これは一般的な方法です。メソッドが動作できるオブジェクトの型またはファミリを指定します。 where句は、TReponseがIModbusMessageインターフェイスを実装する必要があり、新しいキーワードでインスタンス化できる必要があることを示す制約です。それが意味する何
はTResponse
がIModbusMessage
とnew()
は、デフォルトのパラメータなしのコンストラクタを提供するという意味のインターフェイスを実装するタイプのものであるべきです。
私はあなたがより良い程度Generics
どこ読み始めるべきだと思います。新しいは()
ジェネリック型パラメーターたTResponseがパブリックデフォルトコンストラクタをサポートしている必要がありますジェネリックコンストラクタ制約です。
詳細http://msdn.microsoft.com/en-us/library/ms379564(v=vs.80).aspx
あなたがそこに見ることができますhttp://msdn.microsoft.com/en-us/library/512aeb7t.aspx – SLaks
奇妙な獣... – Mehrdad
のチェックこれを私はそれが程度だとは思いませんジェネリック医薬品。私はそれが型制約に関するものだと思う。まあ、 'TResponse'型は' IModbusMessage'のサブクラスでなければならず、何も引数を持たないコンストラクタが必要です。多くの場合、これはあなたのクラスに 'TResponse'の新しいオブジェクトを構築したいということです。 –