数据类型:
1.按范围分类:局部变量、全局变量;
2.按成员分类:成员变量、非成员变量;
3.按内存分配分类:值类型变量、引用类型变量。
按内存分配分类:
引用类型变量:存储在堆上的变量。包含:string(字符串变量," ")、object(一切变量源于object)、dynamic(泛型常用变量)。
值类型变量:存储在栈上的变量。除了引用类型变量外,都是值类型,包含:int (整数,0)、short(短整数)、long(长整数)、float(单精度浮点小数,0.0)、double(双精度浮点小数,0.00)、decimal(金钱小数,比double精度更高,常用于财务类型程序开发变量)、char(字符变量,' ')、
struct(结构体)等等。
按范围分类:
全局变量:又叫成员变量,全局变量声明是在类里,方法外面。实例:
internal class Program
{
public static int a; //全局变量,public为公开访问修饰符,static 表示静态变量
static void Main(string[] args)
{
}
}
局部变量:局部变量声明在方法里面,只能在该方法里面使用。
static void Main(string[] args)
{
string str;
}
常用变量类型:
变量范围可通过:变量类型.MINVALUE ~ 变量类型.MAXVALUE 获取
1.整数:
short:短整数,范围:-2^15 ~ (2^15-1),即-32768 ~ 32767;
int:整数,范围:-2^32 ~ (2^32-1),即-2147483648 ~ 2147483647;
long:长整数,范围:-2^63 ~ (2^63-1),即-9223372036854775808 ~ 9223372036854775807;
2.浮点型:
float:单精度浮点型,实例:0.0。注意:给float类型赋值时,值的后面要加上f/F,否则默认为double类型值,如float f = 1.1f;
double:双精度浮点型,实例:0.00;
decimal:金钱小数,精度比double高,但是依旧有精度损失。实例:0.0m,值的后面跟m/M,与float类似。注意:decimal类型无法赋值给其他类型,同理其他类型也不能赋值给decimal类型。
3.字符变量
char:值必须在 ' ' 中;
4.字符串变量
string:值必须在 " " 中;
5.布尔变量
bool:布尔类型只有true 和false,用于条件判断;
5.object类型
object:该变量是所有变量的基类,任何变量都可以赋值给object变量,但非常消耗性能。
实例:
object obj;
int a = 1;
obj = a;
Console.WriteLine(obj);
char b = '2';
obj = b;
Console.WriteLine(obj);
string c = "3";
obj = c;
Console.WriteLine(obj);
6.空类型
null:空类型只能赋值给引用类型变量,如string。若赋值给值类型,则会报错,但是可以在声明值类型时加一个“?”,就可以赋值为null。
int a; //默认为0
char b; //默认为''
float f; //默认为0
double d; //默认为0
string s; //默认为""
a = null; //报错,值类型不可为空
s = null; //正常赋值,引用类型可为空
int? aa; //可空类型
aa = null; //可以赋值null
string ss = ""; //与ss=null的区别:ss=""需要消耗内存,而ss=null不需要消耗内存。
格式化输出
int a = 10;
Console.WriteLine($"5+5={a}");
string str = "666";
Console.WriteLine($"你真是{str}");