68 lines
1.2 KiB
C#
68 lines
1.2 KiB
C#
using System;
|
|
|
|
struct Point
|
|
{
|
|
public int x, y, z;
|
|
public Point(int x, int y) {
|
|
this.x = x;
|
|
this.y = y;
|
|
this.z = 5;
|
|
}
|
|
public static Point get_zerop () {
|
|
Point p = new Point (0, 0);
|
|
p.z = 0;
|
|
return p;
|
|
}
|
|
public static int struct_param (Point p) {
|
|
if (p.x != p.y || p.y != p.z || p.z != 0)
|
|
return 1;
|
|
/* should modify the local copy */
|
|
p.x = 1;
|
|
p.y = 2;
|
|
p.z = 3;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
public class test {
|
|
public static int Main () {
|
|
Point p = new Point (10, 20);
|
|
Point c = p;
|
|
Point zp;
|
|
|
|
if (c.x != 10)
|
|
return 1;
|
|
if (c.y != 20)
|
|
return 2;
|
|
if (c.z != 5)
|
|
return 3;
|
|
if (p.x != 10)
|
|
return 4;
|
|
if (p.y != 20)
|
|
return 5;
|
|
if (p.z != 5)
|
|
return 6;
|
|
p.z = 7;
|
|
if (p.z != 7)
|
|
return 7;
|
|
if (c.x != 10)
|
|
return 8;
|
|
|
|
zp = Point.get_zerop ();
|
|
if (zp.x != zp.y || zp.y != zp.z || zp.z != 0)
|
|
return 9;
|
|
if (Point.struct_param (zp) != 0)
|
|
return 10;
|
|
if (zp.x != zp.y || zp.y != zp.z || zp.z != 0)
|
|
return 11;
|
|
|
|
// Test that the object is properly unboxed when called through
|
|
// the reflection interface
|
|
object o = Activator.CreateInstance (typeof (Point), new object [] { 1, 2 });
|
|
if (!(o is Point))
|
|
return 12;
|
|
|
|
return 0;
|
|
}
|
|
}
|