MSDN讲解:结构的应用

MSDN讲解:结构的应用

struct 类型适于表示 Point、Rectangle 和 Color 等轻量对象。尽管可以将一个点表示为,但在某些情况下,使用结构更有效。例如,如果声明一个 1000 个 Point 对象组成的数组,为了引用每个对象,则需分配更多内存;这种情况下,使用结构可以节约资源。由于 .NET Framework 包含名为 Point 的对象,因此我们转而调用结构“CoOrds”。

 

struct MyStruct

{

   

    //public int x=10, y=10;//不能通过编译

    //public MyStruct()//不能通过编译

    //{ }

    public int x, y;

    public MyStruct(int x, int y)

    {

        this.x = x; this.y = y;

    }

}

结构的特点:

1、 声明结构的默认(无参数)构造函数是错误的。总是提供默认构造函数以将结构成员初始化为它们的默认值。

2、 在结构中初始化实例字段也是错误的。

3、    如果使用 new运算符创建结构对象,则会创建该结构对象,并调用适当的构造函数。与类不同,结构的实例化可以不使用 new 运算符。

4、 如果不使用 new,则在初始化所有字段之前,字段都保持未赋值状态且对象不可用。

 

5、对于结构,不像类那样存在继承。一个结构不能从另一个结构或类继承,而且不能作为一个类的基。但是,结构从基类 Object 继承。结构可实现接口,其方式同类完全一样。

 

下面举例说明了结构特有的一种功能。它在不使用 new 运算符的情况下创建 CoOrds 对象。如果将 struct 换成 class,程序将不会编译。

struct MyStruct

{

   

    //public int x=10, y=10;//不能通过编译

    //public MyStruct()//不能通过编译

    //{ }

    public int x, y;

    public MyStruct(int x, int y)

    {

        this.x = x; this.y = y;

    }

}

class M

{

    static void Main()

    {

        MyStruct s;

 

        //System.Console.WriteLine(s.y);//现在还不可用

        s.y = 10;

        System.Console.WriteLine(s.y);

        MyStruct ss = new MyStruct();

        System.Console.WriteLine(ss.y);//可用

        MyStruct sss = new MyStruct(10, 20);

        System.Console.WriteLine(sss.x);

        System.Console.WriteLine(sss.y);

        System.Console.Read();

    }

}

 

posted @ 2010-06-01 08:00  gege_s  Views(159)  Comments(0)    收藏  举报