var隐式转换
var是一种特殊的变量类型,它可以表示任意类型的变量。
使用:1. var不能作为类的成员,只能用于临时变量声明时使用,一般写在函数语句块中;
- var必须初始化。
实例:
var i = 0;
var j = ";jdag";
var array = new int[] {1,2,3};
var list = new List<int>() { 1,2,23,2,3,32,1};
设置对象初始值
声明对象时可以直接通过写大括号的形式初始化公共成员变量和属性。
实例:
Person person = new Person() { age = 12,name = "j;afk",id = 25126 };
Person person1 = new Person{ age = 12,name = "j;afk",id = 25126 };//可以省略()
Person person2 = new Person { age = 12 };//可以初始化一个变量
设置集合初始值
声明集合对象时,也可以通过大括号直接初始化内部属性
实例:
int[] array1 = new int[] {1,2,3,4};
List<int> ints = new List<int>() { 1,12,31,3,311,5};
List<int> ints1 = new List<int>{ 1, 12, 31, 3, 311, 5 };
List<Person> ints2 = new List<Person>
{
new Person{ age = 234},
new Person{ name = "ajf" }
};
Dictionary<int,string> keyValuePairs = new Dictionary<int, string>()
{
{ 1,"atrt"},
{ 3,"aert"},
{ 5,"a daf"}
};
匿名类型
var变量可以声明为自定义的匿名类型,不能写函数,只能写变量。
实例:
var v = new { i = 1324, name = "atring" };
Console.WriteLine(v.name);
可空类型
-
值类型不能赋值为空
-
声明值类型变量时,在变量类型后加?可以赋值为空
int? i1 = null;
-
判断是否为空
if (i1.HasValue) { Console.WriteLine(i1); }
if (i1.HasValue) { Console.WriteLine(i1.Value); } -
安全获得可空类型值
如果为空,默认返回值类型的默认值
Console.WriteLine(i1.GetValueOrDefault());
也可以指定一个默认值
Console.WriteLine(i1.GetValueOrDefault(122));//此处返回默认值,但并不是给i1赋值。
其他实例:
object o = null;
//o.ToString();//如果o为空,就会报错。
o?.ToString();//o后面加上?,就不会报错,相当于一种语法糖,自动判断o是否为空。
int[] array2 = null;
Console.WriteLine(array2?[0]);
Action action = null;
action?.Invoke();
空合并操作符
??
左边值??右边值
如果左边值为空,就返回右边值,否则返回左边值。
只要可以为空的类型都可以使用。
此处int3的写法??相当于三目运算符对于int1是否为null的判断,如果是null则返回右边值,如果不是null,则返回左边值。
实例:
int? int1 = null;
int int2 = int1 == null ? 0 : int1.Value;
int int3 = int1 ?? 100;
string str = null;
str = str ?? "123456";
内插字符串
$
用符号$构造字符串,让字符串中可以拼接变量。
实例:
string str2 = "134";
Console.WriteLine($"womenmenenne{str2}");
单句逻辑简略写法
当if,for中只有一句代码时,可以省略大括号。
当属性内get,函数声明中只有一句代码时,可以省略大括号,用 => 后面写执行的一句代码。
get => “你好”;
set => age = 18;
if (true)
Console.WriteLine();