a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
50 lines
1008 B
C#
50 lines
1008 B
C#
using System;
|
|
|
|
class Foo {
|
|
static int t_count = 0, f_count = 0;
|
|
|
|
public static int Main ()
|
|
{
|
|
Console.WriteLine (t && f);
|
|
if (t_count != 1)
|
|
return 1;
|
|
if (f_count != 1)
|
|
return 2;
|
|
Console.WriteLine ();
|
|
Console.WriteLine (t && t);
|
|
if (t_count != 3)
|
|
return 3;
|
|
if (f_count != 1)
|
|
return 4;
|
|
Console.WriteLine ();
|
|
return 0;
|
|
}
|
|
|
|
static MyBool t { get { Console.WriteLine ("t"); t_count++; return new MyBool (true); }}
|
|
static MyBool f { get { Console.WriteLine ("f"); f_count++; return new MyBool (false); }}
|
|
}
|
|
|
|
public struct MyBool {
|
|
bool v;
|
|
|
|
public MyBool (bool v) { this.v = v; }
|
|
|
|
public static MyBool operator & (MyBool x, MyBool y) {
|
|
return new MyBool (x.v & y.v);
|
|
}
|
|
|
|
public static MyBool operator | (MyBool x, MyBool y) {
|
|
return new MyBool (x.v | y.v);
|
|
}
|
|
|
|
public static bool operator true (MyBool x) {
|
|
return x.v;
|
|
}
|
|
|
|
public static bool operator false (MyBool x) {
|
|
return ! x.v;
|
|
}
|
|
|
|
public override string ToString () { return v.ToString (); }
|
|
}
|