为什么要使用变量:
计算机使用内存来记忆计算时所使用的数据,所以内存存储数据时:
要先根据数据的需求(即类型)为它申请一块合适的空间,存储数据,采用二进制的方式存储数据(010101··· ···),
而变量就是内存地址的引用,形象的说:可通过内存中房间的别名(就是变量)找到数据存储的位置。
如何变量声明:
// 变量类型 变量名 = 数值;
int money = 100;
int money;
money = 100;
// 也可以连续声明
int money1, money2,money3;
变量的初始化:
在使用变量之前,必须对变量进行初始化,否则会报错:
变量分类:
(1)类变量:
在类中定义的变量,也叫成员变量,分为:
静态变量和实例变量:
static int x = 90; // 静态变量
int x = 40; // 实例变量
调用方式:
在外部来调用静态变量可以使用类名来调用,实例变量使用创建出来的实例来调用。
在内部可直接调用静态,而在内部调用实例变量时,需要先创建类的实例,然后才能调用:
namespace ConsoleApp2
{
class Program
{
string str = "lxc";
static string s = "hello";
static void Main(string[] args) // Main 主入口方法
{
Console.WriteLine(s); // 静态变量可直接调用
Program classIns = new Program();
Console.WriteLine(classIns.str); // 通过实例来调用类中的实例变量 str
Console.ReadLine();
}
}
}
(2)局部变量:
在类方法中的变量称为局部变量。
常量的使用:
定义:不能被改变的量,固定不变的。
分类:
(1)编译时常量 const - 也就是说在编译前必须要定义好(初始化)的常量,不接受动态改变,否则将会报错。
const int a = 1;
(2)运行时常量 readonly
可以在编译时定义,也可以在运行时定义:
(注意:readonly常量只能在类中定义,不能再Main方法或其他方法中定义!)
(静态只读常量,只能刚开始定义好,或者,在构造函数中去修改常量)
namespace ConsoleApp2
{
class Program
{
static readonly double PI;
// 在构造函数中 修改PI常量
Program()
{
PI = 3.14;
}
static void Main(string[] args) // Main 主入口方法
{
}
}
}
** 静态只读常量如果没有初始化直接使用会出现意外效果,如下:
定义了2个只读常量,输出n1时为0,原因是:只有在运行时常量才能被确定下,程序运行到n2 * 2 时,n2常量还未被定义,所以默认为0,导致最后输出结果为 0。
c#中预定义的数据类型:
值类型:
所谓值类型就是:存储的是单个的值(变量是在栈里边进行分配的,因此效率高)
(1)简单类型:整数(int)、浮点(float)、实数、字符型(char ' ' 注意是单引号)、布尔(bool)
(2)复合类型:结构、枚举
引用类型:
类、接口、数组、委托
值类型例子:
对age2改变并未影响到age。
整数类型:
补充:int 类型 的默认值 为 0。
浮点类型:
主要存储含有小数的数据。
将一个数值、小数强制指定为小书类型或double类型:
(如果一个小数后边没有加 f 或者 d,默认是double类型)
// 强制指定为float类型,后边加f或大写F
float a = 1.1f;
// 强制指定为double类型,后边加d或大写D
double b = 23d;
decimal类型:
decimal类型表示128位数据类型,它是一种精度更高的浮点类型,其精度可达到28位,取值范围为:
(通常在金融计算金额,财务方面,货币 会用到)
如果希望一个小数被当做成decimal类型使用,必须要使用后缀m或M,如:
decimal money = 1.12m;
decimal money = 1.12M;
否则会提示错误:
布尔 bool 类型:
布尔类型主要用来表示true、false值,C#中定义布尔类型时,需要使用bool关键字。例如:
bool类型的默认值是false ( bool赋值时只能赋值true或false )
bool a = true;
字符类型:(不常用,因为有string字符串类型)
(c#语言中,使用char/Char类定义字符,并且字符只能用单引号 - 注意书写的时候 是单引号)
只能定义单个字符,不能写多个字符 !!!!
char name = '吕';
// 或
Char name = '吕'
字符串类型:
(***** 必须使用双引号 ******)
补充:
(1)转义字符 \ ,在c#中如果想输出 \ 需要 \\ 再加一个反斜线(与js一样)。
(2)转义字符小技巧:
@
在字符串类型中如果想输出多个\ ,在字符串前边添加@符号即可,就不需要添加\\ 两个反斜线了:
补充:
(1)\a :当字符串中有 \a 且没有被转义时,输出时,你的电脑会发出一个铃声(有点意思)
string a = "lx\ac";
Console.WriteLine(a); // 电脑会发出 铃铃铃 ···声音
(2)在int类型中,数据初始化时,与数据库打交道,有时我们会把int型数据赋值为 null,但是如果直接赋值,肯定会报错,可以在int后边加上 一个问号:
(此问号是为数据库设计的)
int? number = null;
小练习:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp2
{
class Program
{
static void Main(string[] args) // Main 主入口方法
{
int age = 23; // 整数类型
double total = 98340d; // double类型
char sex = '男'; // 字符类型
bool isValid = true; // bool类型
Console.WriteLine("在线保险单");
Console.WriteLine("年龄:" + age);
Console.WriteLine("保险总额:" + total);
Console.WriteLine("性别:" + sex);
Console.WriteLine("是否有效:" + isValid);
Console.ReadLine();
}
}
}