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

请参见

任务

“结构”示例

概念

C# 编程指南

参考

结构(C# 编程指南)

其他资源

C# 编程语言(针对 Java 开发人员)