零基础学C# 3.0
上QQ阅读APP看书,第一时间看更新

2.1 变量和常量

变量是所有编程语言中最基本的概念,它关系到数据的存储。可以将计算机内存中的变量看做一个盒子,可以在盒子里放东西,也可以从盒子里取东西。变量也是如此,可以通过变量存取数据。本节详细介绍变量的定义和使用方法。

2.1.1 变量的声明

变量是用来存储数据的,不同的数据需要用不同的变量来存储,就像盒子有大有小,盒子中放置的东西也就有多有少,变量也是如此,根据存储的数据类型不同,变量在内存中占用的空间也不相同,这就涉及另一个概念—数据类型。C#语言提供了很多数据类型,用于声明变量,并存储在相应的变量中。表2.1显示了C#常用的数据类型。

表2.1 C#常用的数据类型

了解数据类型之后,就可以学习变量的声明了。C#中变量声明的语法如下:

    <访问修饰符>   数据类型   变量名称;

<访问修饰符>表示访问修饰符是可选项,不是必须添加的。此概念和用法将在后面章节中详细讨论。如需要声明一个整型变量,如下示例:

    private int number;

其中private为访问修饰符,在此可以不写,int为整型变量,number为变量名称。

2.1.2 变量的命名规范

C#中声明变量也要遵循一定规则,使编码更规范。简单规则如下:

❑不能使用C#中的关键字,如class、int、bool等在C#中有特殊意义的字符。

❑变量名通常不能有中文字符。

❑以字母或下划线开头,如age、_name等。

❑使用多个单词组成变量名时,使用骆驼命名法,即第一个单词的首字母小写,其他单词的首字母大写,如myName、showAge等。

2.1.3 变量的赋值

声明了变量之后,就可以在后面的程序中使用。可以在声明变量时给变量初始化,即赋初值,也可在后面的使用中给变量赋值。下面声明两个变量,并给其赋初值:

    int b=0;
    string name="令狐冲";

注意

赋值时必须根据数据类型给变量赋值。如下代码则会出现错误:

    int b=2.4;
    string name=11;

由于b变量声明为整型数据类型,赋值时赋给其浮点型数据,生成时会出错。而name变量声明为字符串类型,赋给其整型数据也是错误的。为了使用方便,C#中提供了解决这种问题的机制,即数据类型转换,将在后面的章节中详细讲述。

2.1.4 常量的定义和使用

【本节示例参考:\源代码\C2\Example_Test】

常量在任何一种编程语言中是非常重要的,常量和变量的不同之处在于,常量在整个应用程序中保持同一个值,而变量根据需要可以赋予不同的值。常量在声明时必须与特定的数据类型相联系,语法如下:

    <访问修饰符> const 数据类型 常量名称=常量值;

例如,const int minAge=10; const float pei=3.14;

注意

常量在声明时必须初始化,即给常量赋值,否则会出现编译错误。

下面通过简单的示例来演示变量和常量的使用方法,示例代码如代码2.1所示。

代码2.1 常量和变量的使用示例

    01    using System;
    02     using System.Collections.Generic;
    03     using System.Linq;
    04     using System.Text;
    05     namespace Example_Test
    06     {
    07          /// <summary>
    08          /// 此程序用来计算存款收益
    09          /// </summary>
    10          class Program
    11          {
    12               static void Main(string[] args)
    13               {
    14                     const float interestRate = 0.35f;        //常量interestRate(银行利率)
    15                     int money = 1000;                            //存款数
    16                     string name = "令狐冲";
    17                     float moneyAll = money * interestRate + money;   //计算存款总数
    18                     Console.Write(name);
    19                     Console.WriteLine(moneyAll);
    20                     Console.ReadKey();
    21               }
    22          }
    23     }

代码2.1中,定义了常量interestRate,因为银行的利率是不会随意改变的,所以用常量比较合适。第15行代码定义了银行的存款数,可以采用float和double型,在这里用int型是为了简化一些。通过代码第17行的计算,得到了用户名为“令狐冲”在当前利率下的存款总数。

说明

Console.Write()和Console.WriteLine()、Console.ReadKey()都是控制台语句,具体用法将在本章的2.7节详细介绍。

图2.1 代码2.1的输出结果

此段代码的运行结果如图2.1所示。

2.1.5 var类型的变量

如果对JavaScript语言有所了解,则对var类型的数据就不陌生。var类型是C#3.0版本中引入的一个新的用法,在之前的其他版本中没有。事实上,var仅仅是一个关键字,并不是一个新的数据类型。可以用var声明任何类型的局部变量,它只是负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,并且只能是局部变量。语法如下:

    var 变量名称=变量值;

下面的声明是正确的:

    var age=12;
    var name=”令狐冲”;
    var flag=true;

上面的声明等同于下面的变量声明:

    int age=12;
    var name="令狐冲";
    bool flag=true;

使用var声明变量必须遵循以下规范:

❑在声明时必须同时赋值,因为声明依赖于赋值号右边的表达式。下面的语句编译时会提示出错。

    var age;
    age=12;

❑使用var声明一个变量后,不能给此变量赋予另一种数据类型的值。下面的语句会出现编译器错误。

    var integer=10;
    integer="令狐冲";

❑使用var声明的变量,初始化时不能为空。下面的语句是不符合规范的,会出现编译器错误。

    var name=null;

❑var声明仅限于局部变量。

代码2.2演示了在程序中使用var声明不同数据类型的变量。

代码2.2 不同数据类型变量的声明Program.cs

    01     namespace Example_2
    02     {
    03          class Program
    04          {
    05                static void Main(string[] args)
    06                {
    07                     //声明字符串型、布尔型、整型、var变量
    08                     string strname = "范跑跑";
    09                     bool flag = true;
    10                     int integer = 20;
    11                     var bookname = "雪山飞狐";
    12                     var age = 12;
    13                     //显示变量值
    14                     Console.WriteLine("字符串值="+strname);
    15                     Console.WriteLine("布尔值="+flag);
    16                     Console.WriteLine("整型值="+integer);
    17                     Console.WriteLine("VAR字符串值="+bookname);
    18                     Console.WriteLine("VAR整型值="+age);
    19                     Console.ReadKey();
    20                }
    21          }
    22     }

代码2.2第11行声明var类型变量bookname,赋初值为字符串,那么bookname即为字符串类型的变量。第12行变量age赋初值为整型数据,此时age就是整型变量。图2.2为演示代码2.2的运行结果。

图2.2 代码2.2运行结果

提示

如果能够明确知道变量的数据类型,建议使用该数据类型,而不是var。