This may be a very basic question, but it still gets me confused (and Google can't h开发者_运维技巧elp) ;-) How can I pass a generic object as a parameter to a function?
For example I have a class CoolGeneric<T>
Now I need a method DoSomethingWithAGeneric(CoolGeneric g)
.
Here the compiler keeps on complaining that a concrete type parameter is necessary. But the method should work with all kinds of type parameters!
How can I do this? Thanks!
Simply :
DoSomethingWithAGeneric<T>(CoolGeneric<T> g)
Or if the method is within a class declaring the generic type :
class MyClass<T> {
DoSomethingWithAGeneric(CoolGeneric<T> g)
}
You want:
DoSomethingWithAGeneric<T>(CoolGeneric<T> g)
the compiler will usually detect the T
automatically (generic type inference), so the caller doesn't normally have to specify it; i.e.
CoolGeneric<int> foo = ...
DoSomethingWithAGeneric(foo);
which is (usually) identical to:
DoSomethingWithAGeneric<int>(foo);
精彩评论