using System;
class Chapter01All
{
class GenericSample<T>
{
public T Kasan(T a, T b)
{
a = (dynamic)a + (dynamic)b;
return a;
}
public T Genzan(T a, T b)
{
a =(dynamic)a - (dynamic)b;
return a;
}
public T Kakezan(T a, T b)
{
a = (dynamic)a * (dynamic)b;
return a;
}
public T Warizan(T a, T b)
{
a =(dynamic)a / (dynamic)b;
return a;
}
}
class MyClassInt : GenericSample <int>{ }
class MyClassDouble : GenericSample<double> { }
class MyClass : GenericSample<int> { }
class Test<T> where T : MyClass
{
T obj;
public Test( T o)
{
obj = o;
}
}
static void Main()
{
GenericSample<int> obj = new GenericSample<int>();
int a = 100; int b = 200;
Console.WriteLine(obj.Kasan(a, b)); //300
GenericSample<double> objA = new GenericSample<double>();
double c = 100.01; double d = 200.02;
Console.WriteLine(objA.Kakezan(c, d)); //20004.0002
MyClassInt objB = new MyClassInt();
Console.WriteLine(objB.Genzan(500, 400)); //100
MyClassDouble objD = new MyClassDouble();
Console.WriteLine(objD.Warizan(200.2, c)); //2.00179982
MyClass objE = new MyClass();
Console.WriteLine(objE.Kasan(100, 200)); //300
Test<MyClass> t1 = new Test<MyClass>(objE);
Console.WriteLine(t1); //Chaper01All+Test'1[Chapter01All+MyClass]
}
}
GenericSampleクラスは、ジェネリッククラスでint型とdouble型を取ります。実行のコードの最後の部分が理解できなくて、途中半端になってますが、実行自体はできます。t1インスタンからKasanを実行する方法が出来ないのか?暫く悩んでます。