C#学习笔记(四):结构类型
2006-01-09 11:05
316 查看
我们首先看一个例子:
[align=left]using System;
namespace Ch09Ex03
{
class MyClass
{
public int val;
}
struct myStruct
{
public int val;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
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);
}
}
}[/align]
编译执行后他的结果是这样的:
尽管对两种类型的变量执行了相同的操作,但结果是不同的。这是因为:
对象是引用类型。在把对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针所指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的一个位置。在把第一个对象引用赋给类型为MyClass的第二个变量时,实际上是复制了这个地址。这样两个变量就包含同一个对象的指针。
结构是值类型。其变量并不是包含结构的指针,而是包含结构本身。在把第一个结构赋给类型为mystruct的第二个变量时,实际上是把第一个结构的所有信息复制到另一个结构中。这个过程与简单变量类型如int是一样的。最终的结果是两个结构类型变量包含不同的结构。本文出自 “努力学习的小熊” 博客,转载请与作者联系!
[align=left]using System;
namespace Ch09Ex03
{
class MyClass
{
public int val;
}
struct myStruct
{
public int val;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
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);
}
}
}[/align]
编译执行后他的结果是这样的:
尽管对两种类型的变量执行了相同的操作,但结果是不同的。这是因为:
对象是引用类型。在把对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针所指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的一个位置。在把第一个对象引用赋给类型为MyClass的第二个变量时,实际上是复制了这个地址。这样两个变量就包含同一个对象的指针。
结构是值类型。其变量并不是包含结构的指针,而是包含结构本身。在把第一个结构赋给类型为mystruct的第二个变量时,实际上是把第一个结构的所有信息复制到另一个结构中。这个过程与简单变量类型如int是一样的。最终的结果是两个结构类型变量包含不同的结构。本文出自 “努力学习的小熊” 博客,转载请与作者联系!
相关文章推荐
- C# step by step 学习笔记8 CHAPTER 9 使用枚举和结构创建值类型
- C# 2010 从入门到精通 学习笔记8 第9章 使用枚举和结构来创建值类型
- (原创)c#学习笔记05--变量的更多内容02--复杂的类型变量02--结构
- c#经典入门学习笔记-结构类型与对象的比较
- C#基础学习笔记--数据类型,值类型,结构类型,枚举类型
- (原创)c#学习笔记09--定义类07--结构类型
- c#学习笔记--数组、枚举、结构、值类型和引用类型
- C#学习笔记(四):结构类型
- c#对象的内存结构(学习笔记)
- C#2005 .NET3.0高级编程学习笔记————类和结构,类的数据成员,类的函数成员(方法、属性)
- PHP学习笔记-- B/S 结构软件类型介绍, 现在是Web2.0的时代;
- C#学习笔记——面向对象、面向组件以及类型基础
- [C#] 类型学习笔记一:CLR中的类型,装箱和拆箱
- 慕课学习C笔记01-第1~4章数据类型、运算符和程序结构语句
- C# in Depth Third Edition 学习笔记-- 值类型和引用
- CLR via C#学习笔记---类型
- C#学习笔记_4.C#类型转换
- 【数据库学习笔记】Oracle_01_sql*plus,存储结构,用户管理,常用数据类型
- C#学习回顾笔记九:switch选择分支结构
- C#学习笔记——类与结构