大家好,我是武汉华师的sunwen.现在是五月四日中午,昨天一天由于在搞自己的技术网站,叫"鬼子山技术站",(嘿嘿,有点恐怖吧!)所以没有写。等这个站建好后,还要大家多多捧场啊,我们这个站主要是面向教育网的,因为服务器就在教育网内。
好了,言归正传。我要说的是c#中的结构(struct),注意,我在这里说的结构不是指的c#的语言结构。这里所说的是一种与类(class)相对的东西,下面我就与类相对比,来说一说这个struct.
下面的这个例子讲述了如何建立一个具有属性,方法和一个字段的结构。并讲述如何使用他。
000: // structs\struct1.cs
001: using system;
002: struct simplestruct
003: {
004: private int xval;
005: public int x
006: {
007: get {
008: return xval;
009: }
010: set {
011: if (value 〈 100)
012: xval = value;
013: }
014: }
015: public void displayx()
016: {
017: console.writeline("the stored value is: {0}", xval);
018: }
019: }
020:
021: class testclass
022: {
023: public static void main()
024: {
025: simplestruct ss = new simplestruct();
026: ss.x = 5;
027: ss.displayx();
028: }
029: }
这个例子的输出是:
the stored value is: 5
从上面的例子中我们可以看到结构和类似乎是一样的。的确,如果你用类去重亲写这个程序,结果是一样的。但是,很明显,两个一样的东西是不可能一起出现的。 结构(struct)是值(value)型的,而类是参考型的。这样,你就可以用结构建立像内建类型那样的对象了。
还有就是如果你用一个new关键字建立一个类的实例的时候,它是以堆(heap)来分配的,而用new来建立一个结构的的实例的时候,它是以栈(stack)来分配。这会给我们提高很多性能(m$说的).好了,让我们再来看下面的例子吧:
000: // structs\struct2.cs
001: using system;
002:
003: class theclass
004: {
005: public int x;
006: }
007:
008: struct thestruct
009: {
010: public int x;
011: }
012:
013: class testclass
014: {
015: public static void structtaker(thestruct s)
016: {
017: s.x = 5;
018: }
019: public static void classtaker(theclass c)
020: {
021: c.x = 5;
022: }
023: public static void main()
024: {
025: thestruct a = new thestruct();
026: theclass b = new theclass();
027: a.x = 1;
028: b.x = 1;
029: structtaker(a);
030: classtaker(b);
031: console.writeline("a.x = {0}", a.x);
032: console.writeline("b.x = {0}", b.x);
033: }
034: }
这个例子的输出是:
a.x = 1b.x = 5
从这个例子例子可以看出,当一个结构被传递到一个方法时,被传递的只不过是一个副本,而一个类被传递时,被传递的是一个参考。所以a.x=输出的是1,不变,而b.x却变了。
还有的区别就是结构可以不用new来实例化,而类却要。如果你不用new来实例化一个结构,那么所有的字段将仍然处于未分配状态,直到所有的字段被初始化。和类一样,结构可以执行接口。更重要的是,结构没有继承性,一个结构不能从别的类继承,也不能是别的类的基类。
例三:
interface iimage
{
void paint();
}
struct picture : iimage
{
public void paint()
{
// painting code goes here
}
private int x, y, z; // other struct members
}
好了,关于结构我就讲到这了,以后还会讲到的。
文章摘要:sunwen教程之----c#进阶(七).
顶一下
(1000)
50%
踩一下
(1000)
50%
【已有0位网友发表了看法,点击查看。】 复制本页共享msn或qq等好友
关于的
- 资讯
- ·Koan MP4 极速转换器 V1.1 下载 2009-10-17
- ·【游戏优化】GameJackal Pro 3.1.2.0 - Final 2009-10-17
- ·[下载工具]FlashFXP v3.8 Beta “烈火”简体中文版 2009-10-17
- ·[转码工具]MediaCoder 0.6.2 Build 4225 2009-10-17
- ·[媒体工具]AnyDVD & AnyDVD HD 6.4.9.1 Beta发布 2009-10-17
- ·[上传下载]木翼下载系统(mydown system) v3.3 build 080605 2009-10-17
- ·[优化设置]bitsum process lasso v3.02免费下载 2009-10-17
- ·[系统检测]belarc advisor v7.2.24.6免费下载 2009-10-17
- ·[系统检测]hwinfo32 v2.20电脑硬件检测软件免费下载 2009-10-17
- ·[内存优化]windows内存整理 v3.20.302 免费下载 2009-10-17
跟帖区 已有 0 条跟贴 ( 点击查看 )
网网推荐
推荐资讯
热点相关
- [桌面工具]桌面图标排列助手 v1.2
- [桌面工具]百度小天使 v2.50免费下载.
- [桌面工具]百度小天使 v2.50免费下载
- [编程开发]“/”应用程序中的服务器错误
- [编程开发]asp.net生成静态html页面并分别按年月目录存放.
- [编程开发]asp.net生成静态html页面并分别按年月目录存放
- [编程开发]asp.net应用技巧:js完成listbox内容的交互实例
- [编程开发]让你的.net应用成为一个灰色盒子
- [编程开发]sql server 2005 sp3正式版
- [编程开发]sunwen教程之----c#进阶(七)
- [编程开发]asp.net上传大文件控件
- [编程开发]menalto gallery v2.2.6 多国语言版免费下载
- [编程开发]在右上角加new浮动图标志
- [编程开发]关于数据库技术发展的四个方向
- [编程开发]常用 css 缩写语法总结
- [编程开发]div+css 显示 隐藏 滑动效果
- [系统设置]易窗oem信息设置 1.0绿色版免费下载
- [cpu相关]cpu speed pro 3.0.3.4绿色版免费下载
- [数据恢复]freeundelete 2.0.32209绿色版免费下载
- [系统其它]易窗可视化ini v1.0免费下载
最新资讯
- 1Koan MP4 极速转换器 V1.1 下载
- 2【游戏优化】GameJackal Pro 3.1.2.0 - Final
- 3[下载工具]FlashFXP v3.8 Beta “烈火”简体中文版
- 4[转码工具]MediaCoder 0.6.2 Build 4225
- 5[媒体工具]AnyDVD & AnyDVD HD 6.4.9.1 Beta发布
- 6[上传下载]木翼下载系统(mydown system) v3.3 build 080605
- 7[优化设置]bitsum process lasso v3.02免费下载
- 8[系统检测]belarc advisor v7.2.24.6免费下载
- 9[系统检测]hwinfo32 v2.20电脑硬件检测软件免费下载
- 10[内存优化]windows内存整理 v3.20.302 免费下载
![[编程开发]asp.net应用技巧:js完成listbox内容的交互实例](http://wwwwang.com/uploadfile/zyxzz/upload/2008_10/081030192775741t.jpg)
![[卸载清除]windows清理助手 v3.0.11.9.1118免费下载](http://wwwwang.com/uploadfile/200912/20091213161844236874.gif)

![[网络电视]晴云网视 综合所有电视于一体](http://wwwwang.com/uploadfile/zyxzz/upload/2008_11/081114135699212t.jpg)









