`

C#入门经典之结构类型与类的区别

阅读更多

结构和类非常相似,但结构是值类型,而类是引用类型。这意味着什么?最简明的方式是用一个示例来说明。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class MyClass
    {
        public int val;
    }
    struct myStruct
    {
        public int val;
    }
    class Program
    {
        static void Main(string[] args)
        {
            MyClass objectA = new MyClass();
            MyClass objectB = objectA;
            objectA.val = 10;
            objectB.val = 20;
            myStruct structA = new myStruct();
            myStruct structB = structA;
            structA.val = 30;
            structB.val = 40;
            Console.WriteLine("objectA.val = {0}", objectA.val);
            Console.WriteLine("objectB.val = {0}", objectB.val);
            Console.WriteLine("structA.val = {0}", structA.val);
            Console.WriteLine("structB.val = {0}", structB.val);
            Console.ReadKey();
        }
    }
}

 运行结果如下:



 示例的说明 

这个应用程序包含两个类型定义。一个是结构myStruct的定义,它有一个公共int字段val,另一个是类MyClass的定义,它包含一个相同的字段(第10章介绍类的成员,如字段,现在只要知道它们的语法是相同的即可)。接着对这两种类型的实例执行相同的操作:

  声明类型的变量。

  在这个变量中创建该类型的新实例。

  声明类型的第二个变量。

  把第一个变量赋给第二个变量。

  在第一个变量的实例中,给val字段赋一个值。

  在第二个变量的实例中,给val字段赋一个值。

  显示两个变量的val字段值。

尽管对两种类型的变量执行了相同的操作,但结果是不同的。在显示val字段的值时,两个object类型有相同的值,而结构类型有不同的值。为什么会这样?对象是引用类型。在把对象赋给变量时,实际上是把带有一个指针的变量赋结了该指针所指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的位置。在用下面的代码行把第一个对象引用赋给类型为MyClass的第二个变量时,实际上是复制了这个地址。

MyClass objectB = objectA; 

这样两个变量就包含同一个对象的指针。结构是值类型。其变量并不是包含结构的指针,而是包含结构本身。在用下面的代码把第一个结构赋给类型为myStruct的第二个变量时,实际上是把第一个结构的所有信息复制到另一个结构中。

myStruct structB = structA; 

这个过程与本书前面介绍的简单变量类型如int 是一样的。最终的结果是两个结构类型变量包含不同的结构。使用指针的全部技术隐藏在托管C#代码中,它使得代码更简单

  • 大小: 10.4 KB
分享到:
评论

相关推荐

    C#入门与提高_C#入门教材

    C#入门教材,非常齐全,包括了当前最新的技术,如泛型,反射等。还对内存管理指针这一块进行了详细讲解,还包括一些其它技术如进程与线程. 内容列表: 1..NET体系结构 2.c#基础 3.对象和类型 4.继承 5.委托与事件 6...

    C#XML入门经典 C#编程人员必备的XML技能.part2

    C# XML入门经典——C#编程人员必备的XML技能 作者:[美]Stewart Fraser, Steven 著,毛尧飞,崔伟 译 出版社:清华大学出版社 出版时间:2003年11月 第1章 在C#中使用XML的原因 <br>1.1 使用XML的原因...

    从零开始学C#(入门经典)

    从零开始学C#主要内容包括数据类型、表达式、运算符、流程控制语句、数组和集合、属性和方法、结构和类、处理异常、VisualStudio2008关于Winform编程中常用组件的使用、C#对文件和流的操作、WPF、GDI十图形图像技术...

    明日科技C#开发入门及项目实战

    实例020 使用typeof关键字获取类的内部结构 实例021 巧用位移运算符获取汉字编码值 实例022 使用异或运算符对数字进行加密 第3章 流程控制语句 实例023 利用if…else语句判断分数是否及格 实例024 利用switch语句...

    Visual C# 2008从入门到精通.pdf

    中文名: Visual C# 2008从入门到精通 作者: 崔群法 资源格式: PDF 版本: 扫描版 出版社: 电子工业出版社书号: 9787121083662发行时间: 2009年04月01日 地区: 大陆 语言: 简体中文 简介: 编辑推荐 本书可作为...

    c#入门教程(菜鸟级)

    结构类型(Struct types) 枚举类型(Enumeration types) 简单类型:(单纯变量,c#为我们提供了一组已经定义的简单类型) 整数类型:(区分数学的整数范围和计算机的整数范围) C#有九种整数类型: 数据类型 特征 ...

    C#从入门到实践源码

    重点包含C# 3.0中的面向对象编程技术和常用的扩展技术,如类、结构、数组、接口、委托、事件、异常处理、泛型、分部类型、可空类型、隐型变量、对象和集合初始化器、迭代器、匿名类型、扩展方法、Lambda表达式、LINQ...

    C#2010从入门都精通(文字版).pdf 包含练习代码包

    Visual C#2010新增了大量可圈可点的丰富特性,《Visual C# 2010从入门到精通:Step by Step》围绕着基础知识和这些新特性全面介绍了如何利用Visual Studio2010和.NET Framework 4.O编写应用程序。书中沿袭深受读者...

    C#面向对象程序设计案例教程

    第1章 C#入门 1.1 NET框架和C#语言简介 1.1.1 NET框架简介 1.1.2 认识C≠语言 1.2 Visual Studio.NET集成开发环境简介 1.2.1 VS.NET起始页 1.2.2 VS.NET集成开发环境 1.2.3 窗口布局调整 1.3 第一个控制台应用...

    C#的简单 基本语法

    C#语法入门 1、大小写区别 2、在C#中的布尔类型为bool,而JAVA为boolean 3、C#有一个不安全模式,在此模式之下可以使用指针 4、有枚举类型 5、代理和索引器 6、运算符重载 7、没有throws关键字 下面开始...

    C#基础教程(最最详细的C#入门丛书)

    C#的基础教程,从最最基础的,如数据类型,常量变量,三大结构等入手,让你全面了解C#

    C#从入门到精通(第3版)第9章

    本章将介绍C#中两个重要的概念:结构和类。结构是从过程化程序设计中保留下来的一种数据类型,而类则是面向对象程序设计中的最基本、也是最重要的一个概念。本章将对面向对象技术、结构和类进行详细讲解。

    C#百例(100个个例,教你学会C#)

    3、该程序先进行对各种值类型的初始化和值类型的两种转换,再进行了枚举类型和结构类型的用法。 4、该程序是求几何面积。先定义了一个抽象类,再通过派生类的声明新的有相同签名的函数成员来实现功能。 5、该程序...

    Visual.C#2010从入门到精通

    学习以c#的必备书 本书介绍了如何使用Visual C++ 6.0编写Windows应用程序。全书内容全面、结构清晰、由浅入深、注重实用,并结合了大量的实例,以方便读者理解。本书既包含菜单、鼠标、键盘等基本操作,又包含图形...

    Visual C#2010 从入门到精通(Visual.C#.2010.Step.By.Step).完整去密码锁定版 I部分

    9.2.2 理解结构和类的区别 162 9.2.3 声明结构变量 163 9.2.4 理解结构的初始化 164 9.2.5 复制结构变量 167 第9章快速参考 170 第10章 使用数组和集合 171 10.1 什么是数组 171 10.1.1 声明数组变量 171 ...

    C#指南中文版

    其中涵盖了该语言的基本语法和结构,你可以通过“语言介绍部分”将 C# 与你用过的其他语言进行比较。还可以浏览教程,尝试生成基本的 C# 程序。 对于 C# 经验丰富的开发者: 如果之前用过 C#,应先阅读此语言最新...

    C# 使用方法 入门教程

    1.1 C#与.NET的关系...... 3 1.2 公共语言运行库...... 3 1.3 详细介绍中间语言...... 6 1.3.1 面向对象和接口的支持..... 7 1.3.2 相异值类型和引用类型..... 8 1.3.3 强数据类型..... 8 1.3.4 通过异常方法处理...

    C# 编程指南 C# 随身参考 Wego开发组专用

    类和结构(C# 编程指南) 属性(C# 编程指南) 索引器(C# 编程指南) 委托(C# 编程指南) 事件(C# 编程指南) 泛型(C# 编程指南) LINQ 查询表达式(C# 编程指南) Lambda 表达式(C# 编程指南) ...

    C#.Net基础5 基础入门知识 数据类型 范例 ppt 实例 可以直接运行

    4、c#中的语法结构 分支结构: if if-else 选择结构: while do-while for 5、常量 声明的常量的语法: const 变量类型 变量名=值; 什么时候会用到常量? 6、枚举 语法: [public] enum 枚举名 { 值1, 值2, 值...

    Visual C# 2010程序设计教程PPT

    第11章 C#数据库编程与ADO.NET ADO.NET体系结构 数据提供程序 数据集DataSet 第12章 C#Web应用程序开发与ASP.NET Web Form ASP.NET的工作原理 使用ASP.NET 配置ASP.NET 第13章 文件与...

Global site tag (gtag.js) - Google Analytics