随笔分类 - c# 语言
玩转C#语法
摘要:所以说,英文真是个好东西,很多资料都只有英文版本,要是不懂英文,甚至你不知道这个资料的存在,更别提用蹩脚的翻译软件去翻译了。wsl 的资料:https://docs.microsoft.com/zh-cn/windows/wsl/interop这里面提到可以用wsl 命令,在windows中使用linux系统里面的程序。wsl 用的命令是运行在windows下面的,比如ls 列出的目录,它并不是l...
阅读全文
摘要:今天一早起床,打开debian,居然出现 错误: 0x80070040 。不知道是怎么回事,网上有篇文章详细介绍了windows linux子系统,打算参考来做做:https://www.jianshu.com/p/bc38ed12da1d 。非常有技术的一篇文章。用wslconfig /u Debian删了系统,输入debian重新安装。过程倒是很简单快捷,就是想不到这个子系统那么容易完蛋。既然...
阅读全文
摘要:AOT是预编译成本地程序,避免JIT动态编译存在的性能问题。netcore一个吸引人的项目,就是基于coreRt 运行时的本地编译技术,下面我来替大家尝试一下它究竟表现如何。 https://dotnet.myget.org/F/dotnet-core/api/v3/index.json Exe netcoreapp2.0 首先要在项目文件添加相关的包源,也...
阅读全文
摘要:突然想起delegate委托是支持+= 和-=操作的,然后研究一下究竟这个是怎么做到的,好模仿一下。一开始以为是+=的运算符重载,但是在类库参考中并没有这个运算符重载,只有!= 和==运算符重载。有点纳闷,最终发现,原来+=这些直接就是语法层面的实现,只是针对delegate才有的福利,所以也不存在模仿的可能性了。顺便就总结一下event事件和delegate委托的区别。这个区别有点类似字段和属性...
阅读全文
摘要:之前研究过c#的async和await关键字,幕后干了什么,但是不知道为什么找不到相关资料了。现在重新研究一遍,顺便记录下来,方便以后查阅。基础知识async 关键字标注一个方法,该方法返回值是一个Task、或者Task、void、包含GetAwaiter方法的类型。该方法通常包含一个await表达式。该表达式标注一个点,将被某个异步方法回跳到该点。并且,当前函数执行到该点,将立刻返回控制权给调用...
阅读全文
摘要:EF Core (EntityFramework Core)是实体关系映射(O/RM)数据库访问框架。这个模式的好处就是让开发人员可以用对象模型来操作数据库,这是一种对开发人员较为友好的方式。O/RM牛逼在哪?非对象模型操作数据库,就要直接用sql语言来做大量的CURD操作(Creat 创建;update 更新;read 读取;delete 删除)。这些操作编写繁琐又容易出错,目的却只是为了操作数...
阅读全文
摘要:.NET Core 基于Nuget包。它是一个.nupkg后缀的zip文件。工具dotnet 工具vs2017 的程序包管理控台这两个工具都可以用命令行来下载安装,更新,上传包(上传要先在网站注册账号);也可以用vs里面的UI工具管理。项目文件控制包项目文件(.csproj后缀)是一个xml文件,描述了引用包的关系,很多时候需要手工编辑这个来达到高级目标。 用命令do...
阅读全文
摘要:.Net Core 是由NuGet包(package)组成的平台。一起使用的多个包的集合:元包(Metapackage)package 包 (对应以前的程序集概念)Framework 框架assembly 程序集重要的NuGet包:System.Runtime 基础包System.Collections 泛型集合System.Net.Http 用于HTTP网络通信System.IO.FileSys...
阅读全文
摘要:泛型不同参数类型生成的对象是相互独立的。 //如 Tuple ts; Tuple to; //ts to 是两个类型的对象。 很多时候,我们希望实现 to = ts 这种操作,为什么?因为看上去它应该如此。 为了达到这个目的,就要解决“泛型参数转换的问题”,这个问题的知识点是in out 泛型变体。老实说,这个问题本身不困难,只是非常不直观,很容易让人忘记。 首先一点,为了实现to = ts,实际...
阅读全文
摘要:lambda 传递ref参数有个语法bug,必须要显式书写参数类型。 //如 delegate bool FuncType(ref int num); FuncType func1; func1 = num => true; //错 func1 = (ref num) => true;//错 func1 = (ref int num) => true;//ok //并且,当一个参数书写类型,其...
阅读全文
摘要:你好吗? using System; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Builder; using Microsoft.AspNetCore.Hosting; using Microsoft.Extensions...
阅读全文
摘要:不知不觉,c#已经诞生n年了,人生有几个十年?c#就浪费了整整一个十年。 这十年里面,电脑发展缓慢,而服务端和手机发展迅速,这是一个移动和后端化的十年,而这个方向,正正是c#没有关注到的,c#把注意力放在了前端,放在了电脑,虽然微软也想弄手机系统,但是失败了,为什么会失败?我也搞不清楚,总之就是失败
阅读全文
摘要:ADO.NET Entity Framework 是对象-关系映射架构,使用CSDL概念架构定义语言和SSDL存储架构定义语言给出数据库和实体类之间的映射信息。这个架构是现阶段最易使用的高层次的数据处理方案。 Visual Studio集成开发环境 自带的 实体数据模型设计器 使用.edmx文件保存信息,生成 CSDL概念架构定义语言.csdl文件、SSDL存储架构定义语言.ssdl文件和M...
阅读全文
摘要:2014-10-25 计划开发一个理财记账的软件练手。 首先是要选择平台,一开始想着安卓,因为安卓手机平板比较流行,硬件环境比较好。但是考虑到没有接触过安卓,而且windows平板很多廉价的产品出来了,考虑到方便性,还是选择了windows平台。 计划中需要手机和平板,台式电脑互通协作,结合office进行开发,office 365平台5用户是499¥,价格还能接受。不过,windows ph...
阅读全文
摘要:我在2011年9月发表了一个问问,http://q.cnblogs.com/q/28679/。没人理我。自己看了一下,尝试自己解决:原问题:MSDN:在非泛型集合中,您可以在调用 Reset 后调用 MoveNext,将枚举数移回集合的开始处。在泛型集合中,您不能再将 Current 设置为集合的第...
阅读全文
摘要:一.代码协定 1.前提条件 Contract.Requires(bool) .EndContractBlock();用于兼容旧if判断代码 2.后置条件 .Ensures(bool) .Result() 返回值 .OldValue(x)返回参数的原始值 .ValueAtResult(out x)返回out参数的值 3.集合检查 .Exists()任一项满足条件 .ForA...
阅读全文
摘要:类型系统:运行模型:整型:浮点:财务:布尔:字符:引用类型:Console控制字符:{序号,空间:控制字符与精度} 如:{0,3:C2}{空间:#.00} 其中,#表示该位置如果有字符就显示,否则忽略;0如果有显示,否则显示0xml注释:类权限控制符:类修饰符:泛型约束:yield语句原理:1.创建...
阅读全文
摘要:.net很庞杂,学习最忌讳什么?为了学而学,而不是为了用而学。我们不是为了成为教师,所以不要成为书呆子,不要成为”博士“,要从庞杂的技术群中选择自己需要的内容进行学习。 如果不加选择,一股脑的去学,这种”参考书式“学习接触一堆信息,不假思索,结果只会培养一个万事知晓,却不擅长运用的人。要思考技术的构成,想想怎么运用组合,将零散的技术有机构成一个整体,这样才是有目的,为运用而学。 首先是语法类的...
阅读全文
摘要:没用的东西一大堆,也许不是因为没用,是因为不会用,不过不会用就别用才是王道! 说了一句废话。 接下来我分享一下我认为有用的东西。 接口有用,但是很难用,一般而言小项目没什么用,有那个心思折腾“耦合”问题,不如花心思实现“业务”算法。 类有用,但是没有多大用,不要滥用类做层层的转接工作。只做轻包装。假如一个东西不能帮你省时间,做得漂亮不过是奇技淫巧,自寻烦恼。不怕挑战,怕无视效率的技巧。避免...
阅读全文
摘要:.Net4.5引入了基于任务的并行编程。并行编程大家都觉得复杂,这次.Net引入新的编程模式,相信引起了大家的关注。我在学习的过程中,做了一个小小的实验,下面和大家分享。以前大家做性能分析的时候,用到的计时器千奇百怪,而这次我发现System.Diagnostics.Stopwatch 类很好用,只需要几步就能解决时间统计问题:Stopwatch stop = new Stopwatch();stop.Start();//开始统计stop.Stop();//结束统计stop.ElapsedMilliseconds //按毫秒返回经过的时间stop.Reset(); //清零统计时间stop.R
阅读全文