C#
王者之路001
解决问题才是王道!
展开
-
C#的partial用法
最近,在用C#做程序。在做东西之前,发现原来的C#代码;看完之后,感觉头大;因为,代码实在太长了,一个功能类写几千行,而且,全都是这么写下来。笔者牢记一个原则:好的代码,不是给机器用的,而是给人用的。看到这个现象,不觉头大。就想起一个原则:对几千行代码进行拆分;正好,C#提供了一个partial关键字,可以对class、interface进行分割。如下所示:源文件A1.cs源文件A2.cs等同于一个源文件A.cs挺理解部分工程师把一大堆功能写到一个类里面的;因为C#始终是一种面向对象的语言原创 2022-06-08 18:11:59 · 3381 阅读 · 1 评论 -
大规模后台导出Excel无法并发
近日,完成一个功能。需要后台在数据库导出数据,然后,生成Excel发送给前端。原来的程序,是C#写的,采取简易原则,继续在原有工程上实现。碰到的第一个问题是,原有的ApiController不支持Response语法。于是,改为Controller实现。第二个问题,是Excel的导出库。最开始,试图用CSV作为Excel导出,发现部分数据会存在格式问题,于是,最终采用了Excel导出库。最后,综合以后,选用NPOI库。样例代码如下:public class FileDownContro原创 2022-04-29 13:58:19 · 1720 阅读 · 0 评论 -
.NetCore Web改为单任务执行
以前,项目里有个.NetCore Web项目,为了效率,并没有采用单任务的方式。但经过测试以后,发现该功能存在如下问题:该任务可以接受多个响应,但假如会有多个需要串行化的任务,由于任务本身并不能保证任务得到串行化处理,从而造成任务处理状态错误。如果任务最终需要串行化处理,功能改为单任务,显然是必然的方法。于是,修改任务的步骤如下:1)添加[MethodImpl(MethodImplOptions.Synchronized)]方法2)增加互斥量作为同步方法。样例如下:public原创 2021-12-29 16:33:26 · 132 阅读 · 0 评论 -
C#匿名函数导致未将对象引用设置到对象的实例错误
匿名函数应该是由数学家阿隆佐·邱奇(Alonzo Church,1903年6月14日-1995年8月11日,美国数学家)在20世纪30年代首次发表的。匿名函数的基础是lamda演算,lambda演算作为一种广泛用途的计算模型,可以清晰地定义什么是一个可计算函数,而任何可计算函数都能以这种形式表达和求值,它能模拟单一磁带图灵机的计算过程;尽管如此,lambda演算强调的是变换规则的运用,而非实现它们的具体机器。目前,匿名函数已经广泛的运用在了多种语言上,报考LISP、C++、JAVA、C#和python。原创 2021-01-28 16:32:26 · 229 阅读 · 0 评论 -
MVC中ViewBag和ViewData的比较
ViewBag和ViewData都是MVC中传输数据的方法,区别如下: ViewData ViewBag 它是Key/Value字典集合 它是dynamic类型对像 从Asp.net MVC 1 就有了 ASP.NET MVC3 才有 基于Asp.net 3.5 framework 基于Asp.net 4.0与.net framework原创 2020-12-30 09:55:51 · 211 阅读 · 0 评论 -
System.Web.Mvc HTTP POST接收的数据为空
今天,对一段数据进行了处理,用的是System.Web.Mvc框架的HTTPPost方法,发现接收的数据为空。代码示例如下(示例代码,所以写的不规范):public class AController : Controller { [HttpPost] public AResponse A(ARequest data) { AResponse result = new AResponse (); return result; }原创 2020-11-16 16:15:43 · 532 阅读 · 0 评论 -
C# 几种字符串拷贝方法比较
今天,碰到了在C#中对字符串的拼接。在计算机中,拼接是字符串拷贝的合理运用,显然,应该研究字符串拷贝的速度的快慢。笔者在以前,研究过Golang语言的不同字符串的拼接,详见笔者的博客《golang字符串拼接方式》(https://blog.csdn.net/wangzhezhilu001/article/details/91421451)。笔者今天又碰到了字符串拼接形式。笔者发现,C#中字符串拼接(拷贝)有三种方式:1)Array.Copy;2)Buffer.BlockCopy;3)原创 2020-11-13 18:02:23 · 1872 阅读 · 0 评论 -
C# 常量
最近,在写C#代码,发现一个变量定义为全局的常量似乎是效率更高的一种方式。于是,按照C++的惯常写法,定义了一个const变量,并声明为const的。如下所示:public const string strTest = "Test";编译以后,发现报这个错误“CS0116 命名空间不能直接包含字段或方法之类的成员” ;这明白过来了。C#和JAVA一样,是纯面向对象语言,也就是说,C#里不允许有脱离类定义存在的类型。没办法,只好把该变量定义在一个类里面。但转念一想,如果定义到类里...原创 2020-09-24 19:02:02 · 406 阅读 · 0 评论