当前位置:  编程技术>.net/c#/asp.net

C#学习笔记之C#结构

    来源: 互联网  发布时间:2014-08-30

    本文导语:  1,类保存在堆中,这种方式可以保证出具的数据在生存周期上的灵活性,性能虽然有一些损失,但由于托管堆的优化,损失是比较小的。 但有时仅需要一个比较小的数据结构,这时可以考虑使用结构 例如:   代码示例: clas...

1,类保存在堆中,这种方式可以保证出具的数据在生存周期上的灵活性,性能虽然有一些损失,但由于托管堆的优化,损失是比较小的。
但有时仅需要一个比较小的数据结构,这时可以考虑使用结构
例如:
 

代码示例:
class windowForm
{
   public int Left;
   public int Right;   
}

这样一类,只有两个存储项,只需要处理这两个变量。那么可以这样定义为结构
 

代码示例:

struct windowForm
{
        public int Left;
        public int Right;

        windowForm(int left, int right)
        {
            this.Left = left;
            this.Right = right;
        }

        public void set()
        {
            Console.WriteLine("Left:" + Left + " Right:" + Right);
        }
    }
 

这样具有构造函数的结构就可以免去定义在队中的麻烦和性能问题。
结构也可以定义属性等。

2,结构是值类型,存储在堆栈中或内联
如下: 两次Set方法处理的结构一样,并不能改变Left的值。
 

代码示例:

class Program
{
        static void Main(string[] args)
        {
            windowForm win = new windowForm();
            win.set();
            Change(win);
            win.set();
            Console.Read();
        }

        static void Change(windowForm win)
        {
            win.Left = 1;
        }
    }

3,结构不能继承
4,结构的构造函数是由编译器提供的一个无参数构造函数,自己不能定义新的用来替换。
但是可以定义带参数的构造函数,
注意:自己定义的构造函数中,要初始化结构中所有字段。
 

代码示例:
struct Customer 

        public Customer(string _id, string _name) 
        { 
            //构造函数中首先初始化机构中的字段 
            id = ""; 
            name = ""; 
     
            this.id = _id; 
            this.name = _name; 
        } 
     
        private string id; 
     
        public string ID 
        { 
            get { return id; } 
            set { id = value; } 
        } 
        private string name; 
     
        public string NAME 
        { 
            get { return name; } 
            set { name = value; } 
        } 
    } 

5,结构主要用于较小的数据结构,过大会有性能损失。
6,结构在作为参数传递时用要用ref 关键字,否则每次都复制新的内容引起不必要的性能消耗。
7,一个结构赋值给另一个结构的时候,由于结构是非引用型所以每次都会进行全部复制,而类只是复制引用。
8,结构总是派生于System.ValueType,虽然不支持继承,但是可以派生于任意多个接口。

就是这些了,C#学习笔记之C#结构,希望对大家有所帮助。


    
 
 

您可能感兴趣的文章:

  • C#学习笔记之C#的虚方法
  • C#学习笔记之C#中的类
  • C#学习笔记之C#类的初始化
  • C#.NET学习笔记5 C#中的条件编译
  • C#学习笔记之C#接口的索引器
  • C#学习笔记之C#只读字段
  • C# 全局变量的学习小结
  • c# 常量与字段学习
  • C#学习笔记之抽象类和抽象函数
  • c# MD5加密的代码(简单示例,仅供学习参考)
  • C# 泛型数组学习小结
  • 实例学习C#中Ref,Out的用法
  • C#学习笔记之扩展方法
  • C#学习笔记之继承
  • C#类的学习笔记之C#构造函数
  • c#进度条ProgressBar学习笔记
  • C# 泛型数组实例学习与总结
  • 实例学习C#中is与As运算符号的用法
  • c# 类型构造器学习
  • c#方法重写和隐藏的学习示例
  • LinkedList学习示例模拟堆栈与队列数据结构
  • asp.net MVC进阶学习---个性化目录结构(二)
  • oracle 数据库学习 基本结构介绍
  • asp.net MVC进阶学习---个性化目录结构(一)
  • C#学习笔记之用户定义类(或结构)的类型转换
  • PHP学习笔记(二) 了解PHP的基本语法以及目录结构
  • java 学习笔记(入门篇)_程序流程控制结构和方法
  • java 学习笔记(入门篇)_多选择结构switch语句
  • asp.net MVC进阶学习---个性化目录结构(三)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 学习linux是用PC好还是笔记本好?
  • Oracle 10G进程体系学习笔记
  • Linux 下 Oracle 命令学习笔记
  • 版本控制ClearCase,求ClearCase的学习笔记。在线等待!分不够另开贴再加。
  • jQuery学习笔记之toArray()
  • javascript开源软件 iis7站长之家
  • SQL学习笔记八 索引,表连接,子查询,ROW_NUMBER
  • MySQL定时器EVENT学习笔记
  • 哪位有西陆"Java初学者"论坛版主chairyuan的学习笔记,现在那里DOWN不了,拜托哪位发一份给我,谢谢:) myjava@263.net
  • Python学习笔记_数据排序方法
  • 设计模式---学习笔记2
  • Oracle数据库基本知识学习笔记
  • jQuery学习笔记之jQuery原型属性和方法
  • JS 正则表达式的相关方法(正则学习笔记1)
  • oracle 技巧学习笔记
  • java 学习笔记(入门篇)_java程序helloWorld
  • java 学习笔记(入门篇)_java的安装与配置
  • CSS学习笔记Padding 属性中参数的定义与使用
  • shell脚本编程之case语句学习笔记
  • SQL学习笔记一SQL基础知识
  • PHP介绍及学习网站推荐
  • 想深入学习Java应该学习哪些东西
  • 准备学习docker: docker version命令查看版本
  • 新手提问:学习c++同时也想学习unix和linux
  • HTML 学习总结及下一步学习教程推荐
  • 学习c后,学习pb,大家提点建议,谢谢哦
  • OpenStack相关学习资料搜集
  • 有最近开始学习Minix的吗?一起来学习吧
  • juqery的python实现:pyquery学习使用教程
  • 我想问问哪里有AIX下啊!~版本越新越好!~我想拿来学习学习
  • 想找共同学习Linux的新手,一起学习,共同成长


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3