C# 变量
一个变量只不过是一个供程序操作的存储区的名字。在 C# 中,每个变量都有一个特定的类型,类型决定了变量的内存大小和布局。范围内的值可以存储在内存中,可以对变量进行一系列操作。 我们已经讨论了各种数据类型。C# 中提供的基本的值类型大致可以分为以下几类:
类型 | 举例 |
---|---|
整数类型 | sbyte、byte、short、ushort、int、uint、long、ulong 和 char |
浮点型 | float 和 double |
十进制类型 | decimal |
布尔类型 | true 或 false 值,指定的值 |
空类型 | 可为空值的数据类型 |
C# 允许定义其他值类型的变量,比如 enum
,也允许定义引用类型变量,比如 class
。这些我们将在以后的章节中进行讨论。在本章节中,我们只研究基本变量类型。
一、C# 中的变量定义
C# 中变量定义的语法:
1 2 |
<data_type> <variable_list>; |
在这里,data_type
必须是一个有效的 C# 数据类型,可以是 char
、int
、float
、double
或其他用户自定义的数据类型。variable_list
可以由一个或多个用逗号分隔的标识符名称组成。
一些有效的变量定义如下所示:
1 2 3 4 5 |
<span class="hljs-keyword">int</span> i, j, k; <span class="hljs-keyword">char</span> c, ch; <span class="hljs-keyword">float</span> f, salary; <span class="hljs-keyword">double</span> d; |
您可以在变量定义时进行初始化:
1 2 |
<span class="hljs-keyword">int</span> i = <span class="hljs-number">100</span>; |
二、C# 中的变量初始化
变量通过在等号后跟一个常量表达式进行初始化(赋值)。初始化的一般形式为:
1 2 |
variable_name = <span class="hljs-keyword">value</span>; |
变量可以在声明时被初始化(指定一个初始值)。初始化由一个等号后跟一个常量表达式组成,如下所示:
1 2 |
<data_type> <variable_name> = <span class="hljs-keyword">value</span>; |
一些实例:
1 2 3 4 5 |
<span class="hljs-keyword">int</span> d = <span class="hljs-number">3</span>, f = <span class="hljs-number">5</span>; <span class="hljs-comment">/* 初始化 d 和 f. */</span> <span class="hljs-keyword">byte</span> z = <span class="hljs-number">22</span>; <span class="hljs-comment">/* 初始化 z. */</span> <span class="hljs-keyword">double</span> pi = <span class="hljs-number">3.14159</span>; <span class="hljs-comment">/* 声明 pi 的近似值 */</span> <span class="hljs-keyword">char</span> x = <span class="hljs-string">'x'</span>; <span class="hljs-comment">/* 变量 x 的值为 'x' */</span> |
正确地初始化变量是一个良好的编程习惯,否则有时程序会产生意想不到的结果。
请看下面的实例,使用了各种类型的变量:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<span class="hljs-keyword">namespace</span> <span class="hljs-title">VariableDefinition</span> { <span class="hljs-keyword">class</span> <span class="hljs-title">Program</span> { <span class="hljs-function"><span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">Main</span>(<span class="hljs-params"><span class="hljs-keyword">string</span>[] args</span>) </span>{ <span class="hljs-keyword">short</span> a; <span class="hljs-keyword">int</span> b ; <span class="hljs-keyword">double</span> c; <span class="hljs-comment">/* 实际初始化 */</span> a = <span class="hljs-number">10</span>; b = <span class="hljs-number">20</span>; c = a + b; Console.WriteLine(<span class="hljs-string">"a = {0}, b = {1}, c = {2}"</span>, a, b, c); Console.ReadLine(); } } } |
当上面的代码被编译和执行时,它会产生下列结果:
1 2 |
a = <span class="hljs-number">10</span>, b = <span class="hljs-number">20</span>, c = <span class="hljs-number">30</span> |
三、接受来自用户的值
System
命名空间中的 Console
类提供了一个函数 ReadLine()
,用于接收来自用户的输入,并把它存储到一个变量中。
例如:
1 2 3 |
<span class="hljs-keyword">int</span> num; num = Convert.ToInt32(Console.ReadLine()); |
函数 Convert.ToInt32()
把用户输入的数据转换为 int
数据类型,因为 Console.ReadLine()
只接受字符串格式的数据。
四、C# 中的 Lvalues 和 Rvalues
C# 中的两种表达式: lvalue:lvalue 表达式可以出现在赋值语句的左边或右边。 rvalue:rvalue 表达式可以出现在赋值语句的右边,不能出现在赋值语句的左边。
变量是 lvalue
的,所以可以出现在赋值语句的左边,也可以出现在右边。数值是 rvalue
的,因此不能被赋值,不能出现在赋值语句的左边。下面是一个有效的语句:
1 2 3 |
<span class="hljs-keyword">int</span> g = <span class="hljs-number">20</span>; <span class="hljs-keyword">int</span> a = g; |
下面是一个无效的语句,会产生编译时错误:
1 |
<span class="hljs-number">10</span> = <span class="hljs-number">20</span>; ❌ |