a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
72 lines
920 B
C#
72 lines
920 B
C#
using System;
|
|
|
|
public class MyUInt32
|
|
{
|
|
public uint x;
|
|
|
|
public MyUInt32 (uint x)
|
|
{
|
|
this.x = x;
|
|
}
|
|
|
|
public static implicit operator uint (MyUInt32 v)
|
|
{
|
|
return v.x;
|
|
}
|
|
|
|
public static implicit operator long (MyUInt32 v)
|
|
{
|
|
throw new ApplicationException ();
|
|
}
|
|
|
|
public static implicit operator MyUInt32 (uint v)
|
|
{
|
|
return new MyUInt32 (v);
|
|
}
|
|
|
|
public static implicit operator MyUInt32 (long v)
|
|
{
|
|
throw new ApplicationException ();
|
|
}
|
|
}
|
|
|
|
class Test
|
|
{
|
|
static MyUInt32 test1 (MyUInt32 x)
|
|
{
|
|
x = x + 1;
|
|
return x;
|
|
}
|
|
|
|
static MyUInt32 test2 (MyUInt32 x)
|
|
{
|
|
x++;
|
|
return x;
|
|
}
|
|
|
|
static MyUInt32 test3 (MyUInt32 x)
|
|
{
|
|
++x;
|
|
return x;
|
|
}
|
|
|
|
public static int Main ()
|
|
{
|
|
var m = new MyUInt32 (2);
|
|
m = test1 (m);
|
|
if (m.x != 3)
|
|
return 1;
|
|
|
|
m = new MyUInt32 (2);
|
|
m = test2 (m);
|
|
if (m.x != 3)
|
|
return 2;
|
|
|
|
m = new MyUInt32 (3);
|
|
m = test3 (m);
|
|
if (m.x != 4)
|
|
return 3;
|
|
|
|
return 0;
|
|
}
|
|
} |