如何理解变量?

December 17, 2023
测试
测试
测试
测试
1 分钟阅读

如何理解变量?

—— 新手编程1001问之C#编程基础

几乎所有的编程语言中都会有变量的概念。

看起来,它并不是一件需要特别的知识铺垫才能正确理解的东西。但是,也许正因为如此,我们总是并没有很好地厘清这个概念的内涵。它和数学中的变量是一个概念吗?

没错!数学中的确有类似变量的概念,比如:方程中的未知数,函数中的自变量等等。但是,它们与编程语言中的变量的概念还是有明显差异的。

比如,方程中的未知数,在方程未解之前,它是未知的,如果我们要猜想它的结果可能会有很多种答案,但是,正解永远只有一个。换句话说,这个未知数终究还是一个确定的值。而编程语言中的变量的值是不确定的。变量的含义侧重于一个变字,变量的值的不确定性,才是变量的本质。它不仅当下不确定,未来也可能不确定。

再比如,函数中的自变量,这是最接近编程语言中的变量的一个数学概念。因为这个自变量的值是变化的,并且它的变化会直接影响到函数的结果。但是,相比编程语言中的变量的概念,自变量是狭义的,它通常只能是数字类型的,也只能在定义域范围内取值。而变量是广义的,不受约束,它几乎可以定义任何对象,除了数字类型,还可以是文本、图像,甚至任何自定义类,其中包括了字段属性和方法。

此外,我们还可以从一个特殊的角度来看看两者的差别。

假设数学中,有一个变量x,它可能会累计递增,在算法上,我们可以将它写进一个递归函数来实现递增,或者干脆增加一个未知数x1,让x1=x+1,然后再x=x1,用这样代换的方法来实现。但是,你不可以写成x=x+1,这就不是数学等式了。

而在编程语言中,x=x+1这样的变量运算几乎随处可见。我们通常将它称之为重新赋值。它是体现变量之变”的精彩呈现。

好了,通过上面的对比,我们对变量,好像有一个更清晰的认识了。那么,我们来看看,编程语言中,是如何定义变量的。

程序语言中,变量的概念是指:程序运行中,用于临时存储数据的对象

这个概念中有三个要点需要把握:

第一,程序运行中,这是变量存在的场景。换句话说,离开了运行中的程序,变量是不存在的。在物理层面,变量存在于内存中,以内存地址的方式记录。

第二,临时...对象,这也是变量存在的一个重要特征,它并不能持久地存在。与此相对的是数据库,数据库是持久化保存数据的地方。所以,我们会经常看到“数据持久化”这个概念,它就是指将变量中的临时数据保存到数据库的过程。

第三,存储数据,这是变量的使命。我们需要理解的是,不要将此处的数据简单理解为数字,数据绝对不能等同于数字。数据可以是任何对象及对象的集合,它是广义的,几乎可以涵盖对一切信息的描述。

下面,我们以C#语言为例,来介绍一下有关变量的定义和赋值。

形式上,C# 有多种变量,其中包括字段、数组元素、局部变量和参数。

每个变量都具有一种类型,用于确定可以在变量中存储哪些值。

变量的类型有如下七类:

1、不可以为 null 的值类型:具有精确类型的值,如简单的值类型。

2、可以为 null 的值类型:为null值或具有精确类型的值。

3、object:null,引用类型。是对任意引用类型的对象的引用,或者是对任意值类型的装箱值的引用。

4、类:默认为null,引用类型,是对类类型实例的引用,或对派生自类类型的类实例的引用。

5、接口:默认为null,引用类型,是对实现接口类型的类类型实例的引用,或对实现接口类型的值类型的装箱值的引用。

6、数组:默认为null,引用类型,是对数组类型实例的引用,或对兼容的数组类型实例的引用。

7、委托:默认为null,引用类型,是对委托类型实例的引用。

变量的声明:

1、格式:类型 + 变量名

int x;

2、命名习惯:驼峰命名法。

一般简单类型的变量使用小写字母开头,或者全部小写字母,类名和接口名使用标准驼峰命名法。

int x;
string myName;
class MyClassName

请注意:C#对大小写敏感。

变量的赋值:通常有两种方法。

1、先声明,后赋值

int x;
x = 0;

请注意,等号“=”不是一个判断,而是一个动作,表示“将某值赋值给某变量”。

2、边声明边赋值

int x = 0;

请注意,不是所有的C#变量都是这样的简单类型的对象,它可以是一个自定义的类,存储几乎任意复杂的数据。这也是我们面向对象编程需要建立的一个重要认知。

另外,有关变量的运算,我们今天就不讨论了。好了,今天咱们就聊到这儿,希望能对你有帮助。

继续阅读

更多来自我们博客的帖子

如何安装 BuddyPress
由 测试 December 17, 2023
经过差不多一年的开发,BuddyPress 这个基于 WordPress Mu 的 SNS 插件正式版终于发布了。BuddyPress...
阅读更多
Filter如何工作
由 测试 December 17, 2023
在 web.xml...
阅读更多
如何理解CGAffineTransform
由 测试 December 17, 2023
CGAffineTransform A structure for holding an affine transformation matrix. ...
阅读更多