これは、これが何であるかであるC#ジェネリックの優れた紹介です。
基本的に、T と S を必要なものに置き換えるだけです。T は戻り値の型で、S は最終パラメーターに使用される型になります ( value
)
例えば:
var myObject = GetLookupValue<MyObject, MyOtherObject>("sTName", "sFName", "sLuName", (MyOtherObject)myOtherObject);
これにより、より堅牢なコードが可能になります。メソッドを必要に応じて成形できる場所
ジェネリックは、次のように何でも入れることができますList<T>
。
List<String> stringList = new List<String>();
List<int> intList = new List<int>();
...
コンパイル時に、ジェネリックの値がコードに組み込まれます。したがって、上記の例で dotPeek を実行すると、次のように表示されます。
public MyObject GetLookupValue<MyObject, MyOtherObject>(string sTName, string sFName, string sLuName, MyOtherObject value)
{
return (MyObject) this.db.a(sTName, sFName, sLuName, false, (object) value, false, false);
}
***しかし、これを書き出すと、パラメーターをジェネリックとして持つことは、 ..にvalue
キャストされているだけなので、かなり無意味に思えます。(これにより、最終的に値オブジェクト (int、double など) をボックス化できます)object
T GetLookupValue<T>(string sTName, string sFName, string sLuName, object value);