Casting Between Data Types in C#
c#, casting, generics, object, types
Solution
Yes, this is possible using C# operator overloading. There are two versions explicit and implicit.
Here is a full example:
class Program
{
static void Main(string[] args)
{
A a1 = new A(1);
B b1 = a1;
B b2 = new B(1.1);
A a2 = (A)b2;
}
}
class A
{
public int Foo;
public A(int foo)
{
this.Foo = foo;
}
public static implicit operator B(A a)
{
return new B(a.Foo);
}
}
class B
{
public double Bar;
public B(double bar)
{
this.Bar = bar;
}
public static explicit operator A(B b)
{
return new A((int)b.Bar);
}
}
Type A can be cast implicitly to type B but type B must be cast explicitly to type A.
Problem
I have (for example) an object of type A that I want to be able to cast to type B (similar to how you can cast an `int` to a `float`) Data types A and B are my own. Is it possible to define the rules by which this casting occurs? Example ``` int a = 1; float b = (float)a; int c = (int)b; ```