Skip to main content

9.创建变量,到底哪种写法最好?

误删

~~ 声明变量只是向编译器 “报备” 变量名的合法性,此刻变量还是空的,没有数据进入。就像你提前预定酒店房间,但还没有真正办理入住。~~ ~~ 这时,数据才会真正写入内存。就相当于你在酒店办理了入住,房间正式分配给你了。~~

第 9 集《创建变量,到底哪种语法好?》

开篇

大家好!我是村长。

上节课,我们搞懂了变量的本质。

今天,我们就正式动手创建变量。

创建变量,常见有三种写法。

但真正开发中,程序员几乎只用一种。

另外两种,要么看情况,要么几乎不用。

本期视频,我就带你搞清楚:

为什么会有三种写法?到底哪一种最好?

知识点:

  1. 三种创建变量的语法
  2. 哪种语法最推荐用
  3. 哪种语法需要看情况用
  4. 哪种语法看懂就行,但不推荐用

(LOGO 动画)

语法1:声明并初始化(推荐用)

声明并初始化是我们最推荐、也是最常用的写法

奇奇:什么叫“声明并初始化”?

村长:其实可以把它拆成两个词来看。

声明,就是声明一个变量。

初始化,就是第一次给这个变量赋值。

两件事一起完成,就叫:声明并初始化。

语法很简单:先写数据类型 再写变量名 最后使用等号赋值

数据类型 变量名 =; 

来看一道例题:

例9.1 请根据下面的数据选择合适的数据类型,声明变量并初始化,最后输出到控制台 数据记录了关于用户,不同类型的信息

数据项
用户名"奇奇"
年龄6
体重21.5
性别'男'
婚姻状态false

因为用户名奇奇是字符串

(切换到 Visual Studio,边演示边讲解)

string userName = "奇奇"; 

所以使用 string关键字指定变量 userName 只能存字符串

然后使用等号把"奇奇"赋值给变量userName。

这里的 = 不是数学里的"等于",而是赋值运算符。它表示:把右边的数据,存入左边变量中。

因为是首次次赋值,所以这一步叫初始化。

奇奇:那以后再修改 userName 的值还叫初始化吗?

村长:那就不叫初始化了,而叫赋值。初始化强调的是首次赋值。

奇奇:那为什么推荐这种写法呢?

村长:因为简洁、安全。你看!这一行代码同时完成了两件事:既告诉编译器“我需要什么类型的变量”,又把数据存了进去。

变量一旦创建,就已经完成了第一次赋值,避免了忘记赋值。

所以请记住一句话:以后写代码,能一步到位,就不要分两步。

这也是实际开发中最常见、最推荐的写法。

接下来,使用同样的思路创建其他变量: (演示其他四 行声明初始化语句)

int age = 6; // 使用 int 类型声明一个变量 age存储年龄
double weight = 21.5; // 使用 double 类型声明一个变量 weight存储体重
char gender = '男'; // 使用 char 类型声明一个变量 gender 存储性别('男'或'女')
bool isMarried = false; // 使用 bool 类型声明一个变量isMarried存储婚姻状态(true 或 false)

最后,我们用输出语句把变量的值输出到控制台。

Console.WriteLine("=====用户信息=====");
Console.WriteLine("用户名:" + userName);
Console.WriteLine("年龄:" + age);
Console.WriteLine("体重:" + weight);
Console.WriteLine("性别:" + gender);
Console.WriteLine("婚姻状态:" + isMarried);

输入完成后,点击保存,点击"开始执行",可以看到:用户信息成功输出了。

注意:如果把变量值 "奇奇" 删掉,编译器会直接报错。

这是因为:C#为了避免程序读取一个没有初始化的数据, 定下一条铁律:

变量必须先赋值,才能使用。

村长小贴士:

如果你去看一些有经验的程序员写的代码,可能会发现他们不写 string、int,而是写三个字母——var。

比如 var age = 6;。这并不是一种新的数据类型——它表示让编译器自动推断类型。编译器会看看右边是啥,自动推断出左边是什么类型。既然 6 是整数,那 age 自动就是 int类型。

对此,微软官方的建议是:对于初学者,建议继续使用实际的数据类型名称,直到你更熟悉代码。 对于有经验的开发者,则需要在代码可读性之间做权衡。所以在这里:建议你暂时别用 var。老老实实用 int、string、double,这个过程本身就是帮你熟悉数据类型的过程,这叫肌肉记忆。var 你只要能看懂就行,等以后写熟了再考虑偷懒。

语法2:先声明,后赋值(看情况用)

说完最推荐的一步到位,再来看第二种:先声明,后赋值。

顾名思义,就是分两步走。

奇奇:既然能一步到位,就不要分两步,为什么还要提供第二种写法?

村长:因为有些情况下,变量虽然已经声明,但它的值还没产生,这时,就只能先声明,等值确定以后再赋值。

先声明,后赋值的语法也很简单:

数据类型 变量名;
变量名 = 数据值;

第一步:声明变量,不赋值。

第二步:等拿到数据以后,再赋值。

请看例题:

例9.2 请编写程序,根据单价(10元)和数量(5个)计算商品总价(total),并输出结果。

首先,这道题的目标是输出商品总价, 我们可以先声明一个 total变量 存储商品总价。

但这时总价还是未知的,所以先声明,不赋值。

接着输出总价,把解题的基本结构先写出来。

int total;
Console.WriteLine("您购买商品的总价是:" + total + "元");

因为 total 没有赋值,就直接拿去输出。所以这里会报错。

给 total 赋值,我们需要通过单价和数量计算出总价。 在int total;的下一行,用 int 关键字声明变量price,并赋值10, 声明变量count,赋值5 这样就可以计算出总价,total = price * count; 星号表示相乘。

int total;
int price = 10;
int count = 5;
total = price * count;
Console.WriteLine("您购买商品的总价是:" + total + "元");

点击"开始执行",这样,总价就输出成功。

村长小贴士:

知道值,就一步到位; 不知道值,就先占位置。

语法3:一次声明多个变量(不推荐用)

接下来这种语法,你必须能看懂,但平时写代码,不推荐使用。

语法也很简单。 先写数据类型, 再用英文逗号,分隔多个同类型的变量名

数据类型 变量名1, 变量名2, 变量名3;

例如:我们要定义三个整数类型变量,可以这样写:

int a, b, c;

当然,声明的同时,也可以直接赋值:

int a = 10, b = 20, c = 30;

奇奇:既然不推荐,为什么 C# 还支持这种写法? 村长:因为它可以一次声明多个同类型的变量,代码确实更短。但是,代码短,并不代表代码好。

现在大多数开发团队,更推荐一行一个变量, 因为可读性更好,维护更方便

总结

创建变量的三种常见语法,我们已经全部学完。

最后总结一下:

以后创建变量时,你只需判断一件事: 有值,就用语法一:声明并初始化; 没值,就用语法二:先声明后赋值; 语法三:一次声明多个变量,认识就行,不推荐用

结束语

本期视频就到这里。我是村长。

如果这个视频对你有帮助,记得点赞、收藏、关注。 感谢观看,我们下期见。


语法2:先声明 后赋值(看情况用)

声明变量的语法是:先写数据类型,再写变量名。

来看一道例题:

例8.1

string userName;  // 我们可以使用 string 类型声明一个变量userName 存储用户名 
int age; // 使用 int 类型声明一个变量 age存储年龄
double weight; // 使用 double 类型声明一个变量 weight存储体重
char gender; // 使用 char 类型声明一个变量 gender 存储性别('男'或'女')
bool isMarried; // 使用 bool 类型声明一个变量isMarried存储婚姻状态(true 或 false)

这里要特别注意:

声明变量,只是向编译器 “报备” 变量名的合法性,此刻变量还是空的,没有数据进入。

这就像你提前预定酒店房间,但还没有真正办理入住。

在 C# 里有一条铁律:变量必须先赋值,才能使用。

首次给变量赋值,叫作“初始化“。

赋值的语法是:等号左边是变量名,等号右边是你要存储的数据值;

变量名 = 数据值;

注意:这里的 = 不是数学里的"相等",而是赋值运算符,意思是:把右边的数据,存到左边变量名对应的内存里。

来看下一道例题:

例8.2 请根据以下数据,为例8.1中的变量完成赋值,并输出到控制台

数据项
用户名"奇奇"
年龄6
体重21.5
性别'男'
婚姻状态false

回到 Visual Studio。这道题分两步:先赋值,再输出。

第一步,为变量赋值。可以按一下暂停,自己先写一遍,再回来看:

userName = "奇奇";  // 为 userName 赋值"奇奇",注意使用英文双引号。
age = 6; // 直接为 age 赋值整数6,什么符号也不用加
weight = 21.5; // 同样直接为 weight 赋值 小数21.5
gender = '男'; // 为 gender 赋值 '男',注意加上英文单引号
isMarried = false; // 变量isMarried是布尔值,布尔值只有 true 或 false 两个值,在这里赋值 false;

赋值完成后,数据才会真正写入内存。

就相当于你在酒店办理了入住,房间正式分配给你了。

第二步,用输出语句Console.WriteLine() 把变量的值打印到控制台。

小括号里直接写变量名就行。因为这些变量在上面已经声明并且初始化了,编译器认得它们。

Console.WriteLine(userName);
Console.WriteLine(age);
Console.WriteLine(weight);
Console.WriteLine(gender);
Console.WriteLine(isMarried);

输入完成后,点击保存,点击运行,可以看到:变量值成功输出了。

注意:如果把声明或赋值注释掉,编译器立刻翻脸报错。