免责声明
本人接触C#,.Net一年时间,本文内容基于我平时对于C#语法的积累,如有问题请多包涵。以下内容除了C#之外,还有Visual studio编译器相关的内容。
在使用C#的一年多里面,我发现C#的语法糖真的很不错,Visual Studio也有些不错的功能,这里给大家总结一下。
瞎写个字当封面。
声明变量,使用变量
C#定义变量的时候使用{get;set;}语法。
get,set语法介绍
public class MenuBar
{
public string? Icon { get; set; }
public string? Title { get; set; }
public string? NameSpace { get; set; }
}
这个用来干什么呢?简单来说就是C#帮你把数据封装好了。
声明变量,我们可以New 变量名(){添加对应参数};
new MemoItem() { Title = "Memo标题" , Content = "MemoContent"}
这样优点是我们可以不用写多个创建函数。
优雅,实在是太优雅了!——我
添加注释
在Visual studio 里面添加C#注释,我们可以通过添加"///"来添加注释,会自动注解代码
添加注释鼠标悬停也会显示对应的注释
也可以添加 #注释来实现代码管理功能。例如 #region和#endregion 来折叠代码
每一个不写注释的代码,都是对程序的辜负。——尼采
字符串操作
在这里你可以看到C#很好的使用了ES6的语法,学过前端的朋友们会比较了解。
“@”,强字符串定义:里面特殊字符没有任何含义
例如:下面这句话不会被报错
“$”,模板字符串,类似于ES6里面``。但是我感觉比这个写起来更舒服,
`${变量1},${变量2}`\\ES6
$"{变量1},{变量2}"\\C#
注意:C#使用$“{{}}“来转义”{}”
终于长字符拼接不用多个""来连接变量了。
微软说要使用ES6语法,C#便有了ES6语法——旧约·创世纪
NuGet库
java有Maven仓库,Vue有npm,React有yarn,Python有pip。C#也有自己的仓库NuGet
NuGet上面有很多很好的库,很多都是从Java生态里面移植过来的,比如NLog,NPOI,也有很多是微软自己开发的库。好用的第三方库和国产的库也很多
我逛了一晚上NuGet库,不是因为我逛完了,而是因为天亮了——麦克阿瑟
使用迭代器
上文说道C#很多语法类似于ES6语法,当然前端最舒服的迭代器C#也有,C#里面叫做action
List可以使用
- ForEach:遍历
- Sort:比较
- Where:查询
但是遍历器没有JS里面那么多,JS里面还有Map,Filter迭代器,当然使用Where已经可以实现Map,Filter的功能了。
C#语法,多看一眼就会爆炸,再学一点就会融化。——蔡徐坤
连接数据库
这里要讲到.NET技术。如果说java是被springboot高度绑定的技术,那么C#就是和.NET高度绑定。.NET在国内知名度很小,这里不多介绍。
.NET 拥有一个叫EF技术,全面叫做EntityFramework,是一个ORM数据库模型。简单来说就是把常用的Sql语句,封装成方法,而且使用缓存追踪技术。在你修改该值时,缓存中的内容也会被修改。
如图
并且在生成.NET实体模型的时候,也会把数据库对象代码自动生成。简单来说就不用一点一点去新建数据库对应的实体类,并且还要仔细观察对象名称是否拼写错误。
世界上没有完美的语言,也没有完美的框架,只有最适合的工具。——丘吉尔
执行异步
C#引入了 asunc和await语法,使得异步代码更舒服的阅读,更适合人的理解方式。其实前端的ES6也使用asncy和await进行异步的操作。
伪代码简单介绍
async,await和Thread的区别
世上只有一种异步函数,就是在认清线程的真相之后合理控制线程——罗曼罗兰
多返回值,多重载
C#通过使用ref和out修饰词来对参数进行赋值,有点类似于指针的感觉,通过ref和out来解决多返回值的问题。
简单来说
伪代码:
public void Test(res num1,out num2);
int num1;
int num2;
Test(num1,num2)
//你在里面进行的所有操作,num1和num2都会保留。
//这样变解决了多返回值的问题
ref和out简介
通过在函数里面定义时进行赋值,可以轻松定义多个重载函数,注意:赋值的参数要放在函数的末尾
static void Main(string[] args)
{
Test(1);//1+3 = 4
Test(1,2);//1+2 = 3
}
public static int Test(int num1 ,int num2 = 3)
{
return num1 + num2;
}
函数是一座围城,城外的变量想进去,城里的变量想出来。——钱钟书《围城》
IntelliSense,智能代码提示
Visual Studio有智能代码提示,和平常的代码补全不一样,Visual studio 会根据你写的代码自动猜你之后要写的代码。
灰色的就是自动提示的"int num3 = 3"
代码补全不值一提,我必须达到——完美。——英雄联盟,烬
提示:Viusal studio代码补全快捷键:ctrl+j
visual studio开启自动补全:
这样没有引入的命名空间的类也会被提示。之前没有提示实在太蛋疼了。
结尾
这就是我一年用C#以来的总结。当然C#还有委托,反射,泛型等很优秀的设计。但是由于这些有点难度,自己掌握的不清楚,就不在这里描述了。C#还是有很多优点的,但是就是和java生态位重叠太厉害了。国内还是以java为主流。这里小弟就抛砖引玉,希望大佬能补充C#比较舒服的语法糖或者Visual studio比较好用的功能。