Generics?
-
I am not sure how to do this and need some help.... I have a couple of functions that are identical other than one input parameter, signatures look like: public void Func(Dictionary) public void Func(Dictionary) these end up calling the same functions with different signatures, but as I said, do the same thing. What I want is to combine them both into 1 function that handles both cases. Can it be done, and if so how? Thanks!
-
I am not sure how to do this and need some help.... I have a couple of functions that are identical other than one input parameter, signatures look like: public void Func(Dictionary) public void Func(Dictionary) these end up calling the same functions with different signatures, but as I said, do the same thing. What I want is to combine them both into 1 function that handles both cases. Can it be done, and if so how? Thanks!
"What I want is to combine them both into 1 function that handles both cases. Can it be done, and if so how?" Implement the string version, then convert the ints into strings to use it with ints.
"Microsoft -- Adding unnecessary complexity to your work since 1987!"
-
I am not sure how to do this and need some help.... I have a couple of functions that are identical other than one input parameter, signatures look like: public void Func(Dictionary) public void Func(Dictionary) these end up calling the same functions with different signatures, but as I said, do the same thing. What I want is to combine them both into 1 function that handles both cases. Can it be done, and if so how? Thanks!
Maybe. But C# generics aren't C++ templates - you can't call two different overloads of a method based on the concretization of a generic type, because the concretization doesn't happen at compile time. It would look like this:
public void Func<T>(Dictionary<T, int> somename)
But going by the description, there's a good chance you can't do this (or actually you could, but you'd have to manually test the type of T, and that's arguably a worse situation than you're on now).
-
I am not sure how to do this and need some help.... I have a couple of functions that are identical other than one input parameter, signatures look like: public void Func(Dictionary) public void Func(Dictionary) these end up calling the same functions with different signatures, but as I said, do the same thing. What I want is to combine them both into 1 function that handles both cases. Can it be done, and if so how? Thanks!
I'd suggest looking at whatever part(s) of the functions that are truly identical (including types) and factoring that logic out of the two specific implementations, into a (private) sub-function. Or use the generic implementation as suggested by Harold. Either way, be careful to avoid falling back to an
object
-based (non-generic) implementation, because boxing-unboxing will impact your performance.