赞
踩
特殊语法、值和引用类型
var是一种特殊的变量类型
它可以用来表示任意类型的变量
注意:
1、var不能作为类的成员,只是临时声明
2、var必须初始化
声明对象时
可以通过直接写大括号的形式初始化公共成员变量和属性
作用:可以快速初始化
小括号可以省略
声明集合对象时
可以通过大括号直接初始化内部属性
var可以声明为自定义的匿名类型
var v = new { age = 18, money = 100};
1、值类型是不能为空的 int c = 3; 2、声明时,在值后面加? int? c = null; 3、判断是否为空 if (c.HasValue) { Console.WriteLine(c); Console.WriteLine(c.Value); } 4、安全获取可空类型值 int? value = null; 4-1、如果为空,默认返回值类型的默认值 Console.WriteLine(value.GetValueOrDefault()); 4-2、指定一个默认值 Console.WriteLine(value.GetValueOrDefault(-1)); 4-3、?会自动判断是否为空 object o = null; if (o!=null) { o.ToString(); } //?相当于语法糖 o?.ToString(); //数组判断非空简写 int[] arrayInt = null; arrayInt?[0]; //委托判断非空简写 Action action = null; action?.Invoke;
空合并操作符 ??
左边值 ?? 右边值
如果左边值为null 就返回右边值,否则返回左边值
只要是可以为null的类型都能用
int? intV = null;
//int intI = intV == null ? 100 : intV.Value;
int intI = intV ?? 100;
string str = null;
str = str ?? "空";
Console.WriteLine(str);
用$来构造字符串,让字符串可以拼接变量
int age = 18;
Console.WriteLine($"年龄{age}岁");
当循环或者if语句只有一句代码时,大括号可以省略
方法只有一句代码时可以直接 =>
F12查看
class 是引用
struct 是值
命名空间 ↓ 类、接口、结构体 ↓ 函数、属性、索引器、运算符重载等(类、接口、结构体) ↓ 条件分支、循环 上层语句块:类、结构体 中层语句块:函数 底层的语句块: 条件分支 循环等 我们的逻辑代码写在哪里? 函数、条件分支、循环-中底层语句块中 我们的变量可以申明在哪里? 上、中、底都能申明变量 上层语句块中:成员变量 中、底层语句块中:临时变量
编程时大部分都是 临时变量
在中底层申明的临时变量(函数、条件分支、循环语句块等)
语句块执行结束
没有被记录的对象将被回收或变成垃圾
值类型:被系统自动回收
引用类型:栈上用于存地址的房间被系统自动回收,堆中具体内容变成垃圾,待下次GC回收
结构体本身是值类型
前提:该结构体没有做为其它类的成员
在结构体中的值,栈中存储值具体的内容
在结构体中的引用,堆中存储引用具体的内容
引用类型始终存储在堆中
类本身是引用类型
在类中的值,堆中存储具体的值
在类中的引用,堆中存储具体的值
数组本身是引用类型
值类型数组,堆中房间存具体内容
引用类型数组,堆中房间存地址
利用里氏替换原则,用接口容器装载结构体存在装箱拆箱
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。