C#/Net的语法和一些小技巧和语言特性笔记
笔记,备查:
Q.net工程 全局 条件自定义预编译宏:
有使用会用到#define XXXX预编译宏,实现代码条件编译.
但是#define XXXX 只是应用于单个.CS文件的.
如果要全局定义#define XXXX 这需要:
全局(项目)定义#define XXXX 示例:
项目->右键(right-click)->属性(Property)->生成()->常规()->条件编译和符号->{{写入使用数据库,如-> Q_SqliteDB}}
Q.判断Debug或Release环境(2019-02-28):
#if DEBUG Console.WriteLine("hello Debug Develop"); #else Console.WriteLine("hello Release Develop"); #endif
Q.switch case when的使用:
8.0新特性,把贼好用!(熟悉T-SQL的会感觉很亲切,新的switch扩展变得和T-SQL的Case When Then End类似,可以支持不等式区间的布尔表达式)
其可读性吊锤if else!
使用示例(以判断学生成绩区间为例):
Model:
class Student { /// public int grade { get; set; } public string name { get; set; } public string level { get; set; } }
Switch case 使用示例:
//测试数据 IList<Student> students = new List<Student>() { new Student { grade = 50, name = "A_People", level = "None" }, new Student { grade = 70, name = "B_People", level = "None" }, new Student { grade = 91, name = "C_People", level = "None" } }; //----------------------------------------------- foreach (Student student in students) { switch (student) { case Student obj when obj.grade < 60: { obj.level = "不及格"; break; } case Student obj when obj.grade > 60 && obj.grade <= 70: { obj.level = "及格"; break; } case Student obj when obj.grade > 60 && obj.grade <= 70: { obj.level = "良好"; break; } case Student obj when obj.grade >= 90: { obj.level = "优秀"; break; } default: { student.level = "None"; break; } } //case Student obj 中的 obj 局部变量 是 对变量switch(student)中student变量的引用 Console.WriteLine($"学生:{student.name} 成绩:{student.level}");
本文原创,不定时更新
可以随意转载到任何网站
~但是~ 转载也要按“基本法”
请注明原文出处和作者