Is it possible in C# to overload a generic cast operator in the following way?
c#, casting, generics, operator-overloading
Solution
Conversion operators can't be generic. From the spec section 10.10, here's the format of a conversion-operator-declarator:
conversion-operator-declarator:
implicit operator type ( type identifier )
explicit operator type ( type identifier )
Compare this with, say, a method-header:
method-header: attributesopt method-modifiersopt partialopt return-type member-name type-parameter-listopt ( formal-parameter-listopt ) type-parameter-constraints-clausesopt
(Sorry about the formatting - not sure how to do it better.)
Note that the operator format doesn't include a type parameter list or type parameter constraints.
Problem
Just wondering if there is anyway to represent the following code in C# 3.5: ``` public struct Foo<T> { public Foo(T item) { this.Item = item; } public T Item { get; set; } public static explicit operator Foo<U> ( Foo<T> a ) where U : T { return new Foo<U>((U)a.Item) } } ``` Thanks