C#学习笔记(四):结构类型
来源:互联网 发布:淘宝退定金 编辑:程序博客网 时间:2024/04/29 17:50
我们首先看一个例子:
using System;
{
class MyClass
{
public int val;
}
{
public int val;
}
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void
{
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);
}
}
}
编译执行后他的结果是这样的:
尽管对两种类型的变量执行了相同的操作,但结果是不同的。这是因为:
对象是引用类型。在把对象赋给变量时,实际上是把带有一个指针的变量赋给了该指针所指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的一个位置。在把第一个对象引用赋给类型为MyClass的第二个变量时,实际上是复制了这个地址。这样两个变量就包含同一个对象的指针。
结构是值类型。其变量并不是包含结构的指针,而是包含结构本身。在把第一个结构赋给类型为mystruct的第二个变量时,实际上是把第一个结构的所有信息复制到另一个结构中。这个过程与简单变量类型如int是一样的。最终的结果是两个结构类型变量包含不同的结构。
- C#学习笔记(四):结构类型
- C# 学习笔记(四) 结构体实现接口后是值类型还是引用类型
- C#学习笔记(四)
- C#学习笔记(四)
- C#学习笔记(四)
- C#学习笔记(四)
- Python学习笔记(四):动态类型
- 学习杂物(四)c#学习笔记
- C#学习笔记四
- C#学习笔记(四)
- C#学习笔记(四)
- C#学习笔记(四)
- C#基础学习笔记--数据类型,值类型,结构类型,枚举类型
- c#学习笔记--数组、枚举、结构、值类型和引用类型
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- [读书笔记]C#学习笔记四: C#2.0泛型 可控类型 匿名方法和迭代器
- C#学习日记09---数据类型 之 结构(Struct)类型
- c#学习笔记四 委托
- [第五章]第三节、常见异常
- C#学习笔记(一):类
- [第五章] 第四节、throw和throws
- C#学习笔记(二):构造函数的执行序列
- C#学习笔记(三):抽象类和接口
- C#学习笔记(四):结构类型
- [摘选]Java中如何操作和保存对象?
- C#学习笔记(五):类成员的定义
- [摘选]如何使用注释文档和提取?
- C#学习笔记(六):类成员的其他议题
- C#学习笔记(七):接口的执行
- C#学习笔记(八):集合
- C#学习笔记(九):运算符重载
- C#学习笔记(十):阴影和深度复制