一、变量
存储区(内存)中的一个存储单元
(一)变量的声明和初始化
1、声明变量——根据类型分配空间
①声明变量的方式
—变量类型 变量名 = 数值;
—变量类型 变量名;
变量名 = 数值;
—变量类型 变量1,变量2,变量3;
竟然可以用汉字,但是非常不建议用!!!!
namespace Demo2
{
class Program
{
static void Main(string[] args)
{
//声明变量的方式
int money = 100;
int mon2;
mon2 = 200;
int m1, m2, m3, m4;
int 往 = 2;
}
}
}
② 变量的命名规则
首字母:字母/下划线
其余部分:任意数字/字母/下划线
变量的基本要求:简短且能清楚的表明变量的作用,通常第一个单词首字母小写,其余单词首字母大写。
变量名不能与C# 关键字冲突
变量区分大小写
2、初始化变量——将数据存入内存空间
①单独初始化变量
②声明时初始化变量
③同时初始化多个变量
变量的作用域
静态变量使用类名引用
实例变量使用类对象引用
类内:静态变量随类的创建而创建,实例变量随对象的创建而创建;静态方法不能调用实例变量,需将类实例化之后再调用,非静态方法可以调用静态变量和实例变量。
类之间:静态方法可直接调用,非静态方法需实例化类之后再调用;
public class MyClass
{
// 静态变量
public static int StaticVar = 0;
// 实例变量
public int InstanceVar = 0;
// 静态方法
public static void StaticMethod()
{
// 可以访问和修改静态变量
StaticVar = 10;
// 不能直接访问实例变量,除非通过对象实例
// MyClass instance = new MyClass();
// instance.InstanceVar = 20; // 这样是可以的,但通常不是静态方法的做法
}
// 非静态方法(实例方法)
public void InstanceMethod()
{
// 可以访问和修改实例变量和静态变量
InstanceVar = 20;
StaticVar = 30;
}
}
class Program1
{
static void Main()
{
// 静态方法调用,不需要实例化对象
MyClass.StaticMethod();
// 实例化对象
MyClass instance = new MyClass();
// 调用非静态方法
instance.InstanceMethod();
// 访问静态和非静态变量
Console.WriteLine("StaticVar: " + MyClass.StaticVar); // 输出: 30
Console.WriteLine("InstanceVar: " + instance.InstanceVar); // 输出: 20
}
}
Console.WriteLine("欢迎来到90年代!\n");
Console.WriteLine("请输入用户名:");
string x = Console.ReadLine();
Console.WriteLine("当前用户名为:" + x);
Console.Read();
3、使用变量——取出数据使用
注意:使用变量前要进行初始化,变量名规则
(二)数据类型
1、值类型——值类型直接存储
(1) 简单类型
①整数类型
②浮点类型
强制转换使用f或d,默认为double类型。
------decimal类型(财务/货币计算)
decimal类型表示128位数据类型,是一种精度更高的浮点类型,精度可以达到28位,取值范围为。如果希望一个小数被当成decimal类型使用,需要使用后缀m或M。
decimal d = 3.2m;
③布尔类型
2、引用类型 ——存储对值的引用
①object类型
object类是所有类的基类。
②string类型
简化字符串操作。
string类型的变量一旦初始化之后,值不会发生改变。
3、值类型和引用类型的区别
例:
3、枚举类型
枚举是一组描述性的名称
枚举定义一组有限的值,不能包含方法
对可能的值进行约束
枚举允许描述行名称表示整数值
4、类型转换
(1)隐式类型转换
①两种类型兼容
②目标类型精度大于源类型
char类型可以隐式的转换成整型和浮点数类型。其他类型无法隐式的转换为char类型。
(2)显式类型转换(前置类型转换)高精度->低精度
①(类型名)表达式
int b = (int)10.2
int类型最大取值范围为2147483647出现溢出。
②Convert.To类型名(表达式)
当发生溢出的时候会提示报错,而不是负数。
③类型名.Parse(表达式),只适用于数值类型的转换
(3)装箱和拆箱——值类型和引用类型的转换
拆箱的类型应该与原类型一致 !!!
int i = 10;
object obj = i;
int j = (int)obj;
二、常量
(一)常量的定义和分类
1、定义:不能被改变的量
2、分类
编译时常量const:
运行时常量readonly:不能定义在构造方法中,只能定义在类体内.
const初始化之后值不变,语句顺序不影响运行结果。 readonly没初始化之前值为0。
三、变量与常量的区别