演算子のリロード(オブジェクトとオブジェクトの加算を実現)ケース
4489 ワード
イニシャルケースコード、末尾分析:
1:Main関数に入り、オブジェクトを新規作成
2.Sum_に入るIntクラスコンストラクション関数(注意クラスに初期化された変数があれば、コンストラクション関数の前で実行されます)例えばクラスにはint s=0;コンストラクション関数の前で実行されます
3.コンストラクション関数は、割り当てを初期化し、プロパティに割り当てます.
4.コンストラクション関数の初期化の終了
5.ToStringメソッドに入るには、オブジェクトのToStringメソッドに対してこのメソッドを書き換える必要がありますが、匿名クラスに対しては必要ありません.
6.TOstringに入る、ここで注意する、x 1,x 2,x 1+x 2は、先に属性にx 1が表示されるのを読み取るのではなく、先にx 1+x 2に行ってこの値を計算し、このときx 1を呼び出す.X,x2.Xは、新しいオブジェクトをreturnし、コンストラクション関数を初期化します.最後に表示されます.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _2011._12._23
{
class Sum_Int
{
private int x;
public int X
{
get { return x; }
set { x = value; }
}
public Sum_Int(int i)
{
X = i;
}
//3
public static Sum_Int operator +(Sum_Int x1, Sum_Int x2)
{
return new Sum_Int(x1.X + x2.X);
}
public static Sum_Int operator -(Sum_Int x1, Sum_Int x2)
{
return new Sum_Int(Math.Abs(x1.X - x2.X));
}
public static Sum_Int operator *(Sum_Int x1, Sum_Int x2)
{
return new Sum_Int(x1.X*x2.X);
}
public override string ToString()
{
return string.Format("(X:{0})",X);
}
}
class Test
{
static void Main()
{
Sum_Int x1 = new Sum_Int(10);
Sum_Int x2 = new Sum_Int(20);
Console.WriteLine("{0}+{1}={2}",x1,x2,x1+x2);
Console.WriteLine("{0}-{1}={2}", x1, x2, x1-x2);
Console.WriteLine("{0}*{1}={2}", x1, x2, x1*x2);
}
}
}
1:Main関数に入り、オブジェクトを新規作成
2.Sum_に入るIntクラスコンストラクション関数(注意クラスに初期化された変数があれば、コンストラクション関数の前で実行されます)例えばクラスにはint s=0;コンストラクション関数の前で実行されます
3.コンストラクション関数は、割り当てを初期化し、プロパティに割り当てます.
4.コンストラクション関数の初期化の終了
5.ToStringメソッドに入るには、オブジェクトのToStringメソッドに対してこのメソッドを書き換える必要がありますが、匿名クラスに対しては必要ありません.
var x = new { name = "Mr.w", Age = 10 };
Console.WriteLine(x);//{ name = Mr.w, Age = 10 }
6.TOstringに入る、ここで注意する、x 1,x 2,x 1+x 2は、先に属性にx 1が表示されるのを読み取るのではなく、先にx 1+x 2に行ってこの値を計算し、このときx 1を呼び出す.X,x2.Xは、新しいオブジェクトをreturnし、コンストラクション関数を初期化します.最後に表示されます.