美文网首页dotNETcsharp
C# Learning:变量和数据的关系

C# Learning:变量和数据的关系

作者: 月银秋 | 来源:发表于2020-02-15 12:55 被阅读0次

变量和数据的关系,看似简单,但如果没有详细的指导未必能够理清,于是就可能导致想不明白一些算法,理解不了面向对象思想等等,这篇文章就帮助大家了解相关的内容。

C# 中变量要指定类型,这些类型可以分为三大类:值类型引用类型指针类型。其中指针类型在单独使用 C# 进行应用层设计的时候不太会使用,因此本文就不涉及了。结构体、枚举类型等等都属于值类型。而我们定义的类等等则属于引用类型。

引用类型属于面向对象的范畴,比较符合我们对世界的认识,理解起来会更加容易一点。我们可以理解成这样:我们的数据,也就是一个个对象,都存在于一个世界中;而变量则指向着世界之内的对象,即:


引用类型

访问 arrow ,也就获取了最上角的箭头,访问 pic 仍然是左上角的箭头,由此我们就可以理解两个变量是如何储存同一个对象,以及如下所示的代码,为何会输出 "2" 而不是 "1" 了:

class MyClass
{
    public int number;
}
static void Main(string[] args)
{
    MyClass myVariable = new MyClass();
    myVariable.number = 1;

    MyClass myVariable2 = myVariable;
    myVariable2.number = 2;

    Console.WriteLine(myVariable.number);
}

因为针对 MyClass 这一引用类型, myVariable2 = myVariable 做到的是让 myVariable2 指向 myVariable 所指向的对象 (可能有点绕,所以加了斜体表示这段是一个整体),也就是最后结果是两个变量指向同一个对象。
同样,我们也可以理解为什么有的对象是访问不到的(右下角三角形),可以进行垃圾回收;而有的变量可能并不指向一个对象,也就是变量赋值为 null 的意义。

说完了引用类型,还有值类型。值类型的变量和数据是一一对应的,一个变量必须有一个数据,一个数据也必须处于一个变量下,即:


值类型

把这张图和引用类型图比较就能发现明显的不同了。因此,值类型赋值的时候,不能做到指向同一个数据,只能复制原来的数据,这也就解释了为什么下述代码输出 1 而不是与引用类型相同的 2 :

struct MyClass
{
    public int number;
}
static void Main(string[] args)
{
    MyClass myVariable = new MyClass();
    myVariable.number = 1;

    MyClass myVariable2 = myVariable;
    myVariable2.number = 2;

    Console.WriteLine(myVariable.number);
}

相关文章

  • C# Learning:变量和数据的关系

    变量和数据的关系,看似简单,但如果没有详细的指导未必能够理清,于是就可能导致想不明白一些算法,理解不了面向对象思想...

  • Python Learning-目录

    一、Python Learning-环境搭建二、Python Learning-变量和简单数据类型三、Python...

  • 第三章 类型和变量

    C# 有两种类型:值类型和引用类型。值类型的变量直接包含数据,而引用类型的变量则存储对数据(称为“对象”)的引用。...

  • c#类型

    C# 的数据类型分为:值类型和引用类型值类型:变量:从用户角度,变量是存储信息的基本单元。从系统角度,变量是计算机...

  • C# 值类型和引用类型的区别

    C#里把数据类型分为两大类,值类型和引用类型 值类型 值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会...

  • C# 值类型和引用类型的区别

    C#里把数据类型分为两大类,值类型和引用类型 值类型 值类型就是包含实际数据的量,当定义一个值类型的变量时,C#会...

  • EDA数据可视化展示维基百科词条

    对数据间不同变量进行EDA展示,看出不同变量间的关系,和哪些数据可能异常。 导入需要的包和数据。 定义函数,通过正...

  • C# 值类型与引用类型

    C#中的每一种类型要么是值类型,要么是引用类型。 概念:值类型的变量直接包含数据,引用类型的变量存储对数据的引用。...

  • UNITY C# 数据类型

    通用类型系统 C#中,变量是值还是引用仅取决于数据类型 所有的数据类型都是对象。因为它们具有自己ide方法和属性 ...

  • C#语言入门详解006

    006 C#类型、变量与对象详解 目录 *什么是类型*类型在C#语言中的作用*C#语言的类型系统*变量、对象与内存...

网友评论

    本文标题:C# Learning:变量和数据的关系

    本文链接:https://www.haomeiwen.com/subject/fmmefhtx.html