关于结构的一些知识和应用上的限制
2010-05-31 15:25
309 查看
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();
}
}
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();
}
}
相关文章推荐
- 关于const的一些知识
- 关于SharePoint讨论板的一些知识(2)--视图中的栏目
- 关于笔试题中C++的一些基础知识
- winform学习之-----关于按键操作的一些小知识(如何获取焦点所在的当前控件)20160623
- 关于 frame的一些基本知识 分类: ffmpeg-SDL-VLC-Live555 2013-07-22 16:30 315人阅读 评论(0) 收藏
- 关于 frame的一些基本知识
- 一些关于android屏幕的小知识
- 关于TeamSite,网上搜到的一些入门知识串烧
- WinForm中关于DataGridView控件的一些应用
- 关于IOS的一些知识
- 关于 URL 的一些不可不知的知识
- 关于二维码的一些基础知识和问题
- 关于SQL中N,#,@的作用以及关于临时表的一些知识
- 关于高斯光学的一些知识
- 超分辨率重建——关于正则化的一些知识
- javaweb_关于Servlet一些基础知识笔记
- 关于线程的一些浅显知识
- 关于进程间通讯的一些知识
- 关于会话的一些应用
- Android中关于签名的一些知识