C# 在C类中调用方法
这里有一段C代码,我正试图理解。 类在接口中具有以下可用方法C# 在C类中调用方法,c#,generics,C#,Generics,这里有一段C代码,我正试图理解。 类在接口中具有以下可用方法 T GetLookupValue<T, S>(string sTName, string sFName, string sLuName, S value); 当我使用dotPeek查看这个类的用法时,它显示了这一点 public T GetLookupValue<T, S>(string sTName, string sFName, string sLuName, S value) { return (
T GetLookupValue<T, S>(string sTName, string sFName, string sLuName, S value);
当我使用dotPeek查看这个类的用法时,它显示了这一点
public T GetLookupValue<T, S>(string sTName, string sFName, string sLuName, S value)
{
return (T) this.db.a(sTName, sFName, sLuName, false, (object) value, false, false);
}
我怎么称呼这个方法?我需要用什么来替换T和S?此方法将自身呈现为一个通用的查找函数。如果实现真的可以处理任何类型,那么就可以对S和T使用任何类型 示例:
string result = GetLookupValue<string, int>("tname", "fname", "luname", 42);
MyClass result = GetLookupValue<MyClass, string>("tname", "fname", "luname", "blah");
该方法将自身呈现为一个广义查找函数。如果实现真的可以处理任何类型,那么就可以对S和T使用任何类型 示例:
string result = GetLookupValue<string, int>("tname", "fname", "luname", 42);
MyClass result = GetLookupValue<MyClass, string>("tname", "fname", "luname", "blah");
,就是这个
基本上,你只要用你想要的来代替T和S。T是您的返回类型,S将是用于最终参数值的类型
例如:
var myObject = GetLookupValue<MyObject, MyOtherObject>("sTName", "sFName", "sLuName", (MyOtherObject)myOtherObject);
int result = GetLookupValue<int, string>("tname", "fname", "luname", "some value");
这允许更健壮的代码。在这里,您可以将一种方法塑造成您需要的任何形式
泛型是将任何内容放入列表的方式:
在编译时,泛型的值被内置到代码中。因此,如果您对我上面的示例进行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);
}
***然而,在写这篇文章时,将参数值作为泛型似乎毫无意义,因为它只是强制转换到对象上……他们还不如将其转换为GetLookupValuestring sTName、string sFName、string sLuName、object value;。它允许最后装箱一个值对象,比如int、double等,这就是它
基本上,你只要用你想要的来代替T和S。T是您的返回类型,S将是用于最终参数值的类型
例如:
var myObject = GetLookupValue<MyObject, MyOtherObject>("sTName", "sFName", "sLuName", (MyOtherObject)myOtherObject);
int result = GetLookupValue<int, string>("tname", "fname", "luname", "some value");
这允许更健壮的代码。在这里,您可以将一种方法塑造成您需要的任何形式
泛型是将任何内容放入列表的方式:
在编译时,泛型的值被内置到代码中。因此,如果您对我上面的示例进行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);
}
***然而,在写这篇文章时,将参数值作为泛型似乎毫无意义,因为它只是强制转换到对象上……他们还不如将其转换为GetLookupValuestring sTName、string sFName、string sLuName、object value;。它允许装箱一个值对象,比如int、double等
我怎么称呼这个方法
这将取决于您要使用的类型。例如:
var myObject = GetLookupValue<MyObject, MyOtherObject>("sTName", "sFName", "sLuName", (MyOtherObject)myOtherObject);
int result = GetLookupValue<int, string>("tname", "fname", "luname", "some value");
我怎么称呼这个方法
这将取决于您要使用的类型。例如:
var myObject = GetLookupValue<MyObject, MyOtherObject>("sTName", "sFName", "sLuName", (MyOtherObject)myOtherObject);
int result = GetLookupValue<int, string>("tname", "fname", "luname", "some value");
类型T和S是类型。要调用此方法并存储结果,请使用:
SomeClass returnedObject = GetLookupValue<SomeClass, SomeOtherType>("", "", "", "");
该方法将返回一个与您为T输入的内容等效的类型。类型T和S都是类型。要调用此方法并存储结果,请使用:
SomeClass returnedObject = GetLookupValue<SomeClass, SomeOtherType>("", "", "", "");
该方法将返回一个与您为T输入的内容等效的类型。似乎T是您的返回类型,而S是内部用作某个值的类型 因此,您需要指定T和S的类型,因此:
SomeType result = GetLookupValue<SomeType, SomeValueType>(...);
看起来T是您的返回类型,S是一个内部用作某个值的类型 因此,您需要指定T和S的类型,因此:
SomeType result = GetLookupValue<SomeType, SomeValueType>(...);
我看不到任何通用约束,所以什么都没有。是否会导致运行时错误完全是另一个问题。您可以在这里替换任何内容。我看不到任何通用约束,所以,任何内容。是否会导致运行时错误完全是另一个问题。您可以在此处替换任何内容。