Struct(C# 与 Java)
更新:2007 年 11 月
C# 支持 struct 关键字,它也是一个起源于 C 但在 Java 中不可用的项。可以将 struct 想像为一个轻量类。虽然 structs 可包含构造函数、常量、字段、方法、属性、索引器、运算符和嵌套类型,但是多数情况下,它们仅用于封装由相关字段组成的组。因为结构是值类型,所以它们的分配效率要比类略高些。structs 与类的不同之处在于,它们既不能是抽象的,也不支持实现继承。
在下面的示例中,用 new 关键字初始化 struct(调用默认的无参数构造函数),然后设置实例的成员。
public struct Customer
{
public int ID;
public string Name;
public Customer(int customerID, string customerName)
{
ID = customerID;
Name = customerName;
}
}
class TestCustomer
{
static void Main()
{
Customer c1 = new Customer(); //using the default constructor
System.Console.WriteLine("Struct values before initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
System.Console.WriteLine();
c1.ID = 100;
c1.Name = "Robert";
System.Console.WriteLine("Struct values after initialization:");
System.Console.WriteLine("ID = {0}, Name = {1}", c1.ID, c1.Name);
}
}
输出
编译和运行上述代码时,其输出结果显示 struct 变量已按默认值初始化。int 变量初始化为 0,string 变量初始化为空字符串:
Struct values before initialization:
ID = 0, Name =
Struct values after initialization:
ID = 100, Name = Robert