如何优雅的写C#,使用Visual studio

免责声明

本人接触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语句,封装成方法,而且使用缓存追踪技术。在你修改该值时,缓存中的内容也会被修改。
如图
在这里插入图片描述

查询数据
外部修改
缓存追踪+保存缓存
EF
类实体
新的实体
存到数据库

并且在生成.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比较好用的功能。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值