operatorキーワードを使用して、単項演算子(true,fale)をオーバーロードしてみる。
using System;
class SampleClass
{
int n;
string s;
public SampleClass(int n, string s)
{
this.n = n;
this.s = s;
}
// 演算子trueのオーバーロード
public static bool operator true(SampleClass singi)
{
return (singi.n!= 0) && (singi.s != null);
}
// 演算子falseのオーバーロード
public static bool operator false(SampleClass singi)
{
return (singi.n == 0) || (singi.s == null);
}
}
class MainClass
{
// 真偽の判定
public static void boolSample(SampleClass a)
{
if (a)
{
Console.WriteLine("真");
}
else
{
Console.WriteLine("偽");
}
}
public static void Main()
{
SampleClass a = new SampleClass(1, "Kamimura");
SampleClass b = new SampleClass(0, "Kamimura");
SampleClass c = new SampleClass(1,null);
SampleClass d = new SampleClass(0, null);
// 出力値:真
boolSample(a);
// 出力値:偽
boolSample(b);
// 出力値:偽
boolSample(c);
// 出力値:偽
boolSample(d);
}
}
0 コメント:
コメントを投稿