c#特殊语法

一、var隐式类型

var是一种特殊的变量类型,它可以用来表示任意类型的变量

var不能作为类的成员 只能用于临时变量申明时也就是 一般写在函数语句块中,var必须初始化

复制代码
var i = 5;
var s = "123";
var array = new int[] { 1, 2, 3, 4 };
var list = new List<int>();

二、设置对象初始值

申明对象时,可以通过直接写大括号的形式初始化公共成员变量和属性

cs 复制代码
Person p = new Person(100) { sex = true, Age = 18, Name = "唐老狮" };
Person p2 = new Person(200) { Age = 18 };

三、设置集合初始值

申明集合对象时,也可以通过大括号 直接初始化内部属性

cs 复制代码
int[] array2 = new int[] { 1, 2, 3, 4, 5 };

List<int> listInt = new List<int>() { 1, 2, 3, 4, 5, 6 };

List<Person> listPerson = new List<Person>() {
    new Person(200),
    new Person(100){Age = 10},
    new Person(1){sex = true, Name = "唐老狮"}
};

Dictionary<int, string> dic = new Dictionary<int, string>()
{
    { 1, "123" },
    { 2, "222"}
};

四、匿名类型

cs 复制代码
var v = new { age = 10, money = 11, name = "小明" };
Console.WriteLine(v.age);
Console.WriteLine(v.name);

五、可空类型

值类型是不能赋值为 空的 如int c = null;

申明时 在值类型后面加? 可以赋值为空

引用类型本身就可以赋值null

cs 复制代码
int? c = 3;

判断是否为空,不能直接输出空,会报错

cs 复制代码
if( c.HasValue )
{
    Console.WriteLine(c);
    Console.WriteLine(c.Value);
}

安全获取可空类型值

int? value = null;

如果为空 默认返回值类型的默认值

cs 复制代码
 Console.WriteLine(value.GetValueOrDefault());

也可以指定一个默认值

cs 复制代码
Console.WriteLine(value.GetValueOrDefault(100));

语法糖 o?.ToString()

cs 复制代码
object o = null;
if( o != null )
{
    Console.WriteLine(o.ToString());
}
Console.WriteLine(o?.ToString());

六、空合并操作符

用于在左边的值不为 null 时返回它,否则返回右边的值 。它是处理 null 的简洁语法。

result = left ?? right; 相当于 result = (left != null) ? left : right;

left ??= right;相当于 if (left == null) left = right;

左边值 ?? 右边值 如果左边值为null 就返回右边值 否则返回左边值 只要是可以为null的类型都能用

七、内插字符串

用来构造字符串,让字符串中可以拼接变量

cs 复制代码
string name ="fly"
int age = 18;
Console.WriteLine($"好好学习,{name},年龄:{age}");

八、单句逻辑简略写法

cs 复制代码
 if (true)
     Console.WriteLine("123123");

 for (int j = 0; j < 10; j++)
     Console.WriteLine(j);

 while (true)
     Console.WriteLine("123123");
相关推荐
一水鉴天8 小时前
映射、哈希表与哈斯图:计算机科学的三种基线 20261003(元宝)
开发语言·人工智能
Frank_refuel8 小时前
C++11之一场名为“搬家”的 C++ 之旅
开发语言·c++
Wang's Blog9 小时前
Java 项目实战: 外卖平台优化-Nginx配置文件结构与块层级
java·开发语言·nginx
2601_9620715710 小时前
类变量和全局变量的查找路径有什么区别?
开发语言·python
\光辉岁月/11 小时前
5.java-数组
java·开发语言
Java后端的Ai之路11 小时前
Python进阶探索29_eval内置函数
开发语言·python·探索·eval·内置函数
谢亮_vipxieliang11 小时前
Spring 事务失效的常见场景
java·开发语言·数据库·spring boot
时间的拾荒人11 小时前
Qt 多线程详解:从 QThread 到实战
开发语言·qt·面试
郑州光合科技余经理11 小时前
海外版外卖加盟:总站与分站配送规则怎么分开管
java·开发语言·前端·后端·uni-app·php·ai编程
2601_9620715711 小时前
类变量和全局变量的生命周期有什么区别?
java·开发语言·jvm