结构和类非常相似,但结构是值类型,而类是引用类型。这意味着什么?最简明的方式是用一个示例来说明。
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#代码中,它使得代码更简单
相关推荐
至于代码示例,压缩包中的"C#入门经典"很可能是包含了一系列逐步深入的练习和项目,涉及变量与数据类型、运算符、流程控制、函数、类与对象、数组、集合、文件操作、数据库交互等内容。通过这些代码实例,你可以动手...
《C#入门经典》是一本深受程序员喜爱的入门教程,自2002年4月首版以来,它以其深入浅出的讲解和丰富的实例,为无数初学者提供了坚实的C#编程基础。这本书覆盖了C#语言的核心概念、语法结构以及实际应用,旨在帮助...
《C#入门经典书—源码》是一本旨在帮助初学者快速掌握C#编程语言的书籍,其配套的源码提供了丰富的实践示例,让学习者能够通过实际操作加深对C#的理解。C#是一种由微软公司开发的面向对象的编程语言,广泛应用于...
《C#入门经典第五版》是一本专门为初学者设计的编程教材,专注于教授C#语言的基础知识和进阶技能。本书全面覆盖了C#语言的关键概念,从安装开发环境到编写第一个程序,再到掌握面向对象编程,一步步引领读者步入C#的...
异常处理在任何编程语言中都是必不可少的部分,《C#入门经典第7版》也会涵盖异常处理的基本原则,如try-catch-finally结构和throw关键字的使用。此外,书中还会介绍如何利用枚举、委托和事件来增强程序的功能和交互...
《C#入门经典(第7版)》是一本广受欢迎的编程教材,旨在帮助初学者掌握C#语言的基础知识和核心概念。这本书的中文版本使得更多中国读者能够方便地学习和理解C#编程。压缩包内包含的源码文件是为了配合书中的教学,让...
《C#入门经典(第七版)》是一本专为初学者和有经验的程序员设计的C#编程指南,旨在帮助读者快速掌握C#语言的核心概念和技术。这本书以其结构清晰、叙述明了的特点,赢得了广大读者的认可,无论是对于初次接触面向对象...
《C#入门经典》第七版是一本专门为初学者设计的C#编程教程,全面而深入地介绍了C#语言的基础知识和高级特性。本书基于C# 6.0和Visual Studio 2015这两个关键版本,让读者能够掌握最新的开发环境和技术。 1. **C#...
《C#入门经典 第6版》是一本专为初学者设计的C#编程教程,它以清晰易懂的方式介绍了C#语言的基础知识和高级特性。这本书涵盖了从编程基础到实际项目开发的广泛内容,旨在帮助读者快速掌握C#编程技能。 在C#这门面向...
《C# 入门经典(第7版) 6.0 & VS 2015 高清 PDF》是一本专为初学者设计的编程教材,涵盖了C#语言的基础知识和Visual Studio 2015的使用技巧。本书旨在帮助读者快速掌握C#编程,并通过实践了解如何在Visual Studio ...
《C#入门经典(第6版)》是一本广受欢迎的编程教材,旨在帮助初学者掌握C#语言的基础和进阶知识。这本书的源代码包含了每一章的实例和练习,这些代码是理解C#语法、类库应用以及编程实践的重要资源。通过分析和运行...
《C#入门经典》是一本深受初学者喜爱的C#编程教材,它为读者提供了全面且深入的C#语言知识,旨在帮助初学者快速掌握C#编程基础,并逐步提升到高级应用水平。这本书覆盖了从基本语法、面向对象编程到数据库交互等多个...
《C#入门经典》这本书是针对C# 6.0版本和Visual Studio 2015的详尽指南,旨在帮助初学者系统地掌握C#编程语言及其在实际开发中的应用。作者通过深入浅出的方式,讲解了从基础语法到高级特性的全方位知识体系。 首先...
1. **C#基础知识**:书中首先介绍C#的基本语法,包括变量、数据类型、运算符、控制流程(如条件语句、循环结构)、函数和数组等。这些基础知识是编写任何程序的基础,理解和掌握它们至关重要。 2. **面向对象编程**...
《C#入门经典 第7版》是一本专为初学者设计的C#编程教程,它详细介绍了C#语言的基础知识和最新特性。本书旨在帮助读者快速掌握C#编程技巧,从而能够开发出高效、稳定的软件应用程序。以下是根据书名和描述所涉及的...
《C#入门经典(第4版)》是针对初学者编写的一本权威指南,由WROX出版,并在清华大学出版社发行。这本书以其详尽的解释和丰富的实例,为读者提供了全面学习C#编程语言的坚实基础。以下是书中涵盖的一些关键知识点: ...
《C#入门经典英文版》是一本深受编程初学者欢迎的教材,主要针对想要学习C#编程语言的读者。C#是由微软公司开发的一种面向对象的编程语言,它在.NET框架下运行,广泛应用于Windows应用开发、游戏开发、Web应用以及...
《C#入门经典(第5版)》是一本广受欢迎的C#编程教材,适合初学者及有一定经验的程序员深入学习。源代码是书中理论知识的实践体现,它涵盖了从基础到进阶的各种C#编程概念和技术。通过分析和运行这些源代码,读者可以...
《C#入门经典(第5版)》是一本广受欢迎的编程教材,旨在帮助初学者掌握C#语言的基础和进阶技巧。源代码是学习编程过程中不可或缺的一部分,它提供了实践和理解理论概念的实例。本资源包含多个章节的源代码,如...
"C#入门经典(原版教程)"是为初学者设计的一套全面的学习资源,旨在帮助他们从零开始掌握C#语言的基础和高级特性。 在C#的学习过程中,首先会接触到的基本概念包括变量、数据类型、运算符和控制结构。变量是存储...