Operators in C# Generics -


in c++ can write following:

template <typename t>      void print(t a, t b)        {           cout<<a+b<<endl;       }  print(12,56) or print('c','s'); 

if overload operators user-define types(classes) can write:

person a, b; print(a,b); 

but in c# cant write operators such + - or * / why can't write this? , how can it(use operators in generic methods)?

how can it(use operators in generic methods)

generally, can't. operators, if used type parameter (say t), compiler cannot work out applicable overload use @ compile-time.

if write user-defined operators on base class (that on reference type non-sealed), can use them if have constraint. example system.uri non-sealed class overloads == operator. if do:

class test<t> t : uri {   internal void method(t x, t y)   {     bool ok = x == y;   } } 

the user-defined overload used. same other operators, of course.

but want pre-defined value types , pre-defined operators, example t numeric type (struct), , want == (equality) or * (multiplication) or << (bit shift on integer) or similar. not possible in c#.

it possible use dynamic instead of generic types, entirely different.


Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -