Bypass for function having return type as Collection<T>
我有一个函数应该返回一个collection
有没有绕过这个的方法?
谢谢。。。
你应该把它声明为
1 | public static Collection<T> func_name<T>() ... |
如果在已经具有泛型参数t的类中定义了函数,则可以删除第二个t。
你不能写:
1 2 3 4 | public static Collection<T> func_name() { // Implementation } |
函数如何知道要返回的类型?
您必须在方法声明中指定它需要指定
1 2 3 4 5 6 7 8 | public static Collection<T> func_name<T>() { // Implementation } ... Collection<string> obj = func_name<string>(); |
注意,在某些情况下,编译器可以推断使用的类型(称为类型推断)。它不会更改方法声明,但可以简单地使用该方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | public static Collection<T> func_name<T>(T param) { } private static void Main(string[] args) { string paramAsString = string.Empty; // Type inference here: the compiler know which is the type // represented by T as the parameter of the method that must // be of type T is a string (so, for the compiler, T == string) // That's why in this example it's not required to write: // var obj = func_name<string>(paramAsString); // but following is enough: // var obj = func_name(paramAsString); Collection<string> obj = func_name(paramAsString); Console.ReadLine(); } |
我建议你看看C中的仿制药。
声明为
1 | public static Collection<T> func_name<T>() |
这在C++中被称为"泛型",并且类似于C++模板类/函数。您可以在本文中找到一些关于C泛型的基本信息和许多有用的链接。
谢谢你的帮助!
我决定序列化该函数以使其成为通用函数。