public struct Vector
{
public int X;
public int Y;
public int Z;
}
public struct Point
{
public decimal x, y;
public Point(decimal pointX, decimal pointY)
{
x = pointX;
y = pointY;
}
}
struct
instance fields can be set via a parametrized constructor or individually after struct
construction.struct
defines a sealed type that implicitly inherits from System.ValueType.null
, although it can used as a nullable type:Vector v1 = null; //illegal
Vector? v2 = null; //OK
Nullable<Vector> v3 = null // OK
new
operator.//Both of these are acceptable
Vector v1 = new Vector();
v1.X = 1;
v1.Y = 2;
v1.Z = 3;
Vector v2;
v2.X = 1;
v2.Y = 2;
v2.Z = 3;
However, the new
operator must be used in order to use an initializer:
Vector v1 = new MyStruct { X=1, Y=2, Z=3 }; // OK
Vector v2 { X=1, Y=2, Z=3 }; // illegal
A struct can declare everything a class can declare, with a few exceptions:
struct
instance fields can be set via a parameterized constructor or individually after struct
construction. Private members can only be initialized by the constructor.