c#.net
文章平均质量分 93
c#语言与.net平台
老朱.
业余时间喜欢写点技术博客,读点无用之书。想阅读我更多原创的非技术类文章,可以关注我的公众号 老朱的读书随想
展开
-
c# 委托
本篇博客和大家分享C#中的委托原创 2015-04-15 21:46:20 · 1334 阅读 · 2 评论 -
C# 事件
本篇文章我们来讨论C#中的事件。委托是事件的基础,了解委托请点击C#委托 。 我们先来看下面这个类public class Person{ public string Name { get; set; } public int Age { get; set; } public void ZhuangBi() { string topic="I am原创 2015-04-17 09:45:22 · 1858 阅读 · 3 评论 -
C# Lambda表达式
本篇我们来讨论C#中的Lambda表达式。本篇会使用上一篇文章:C#委托中的Person类,代码如下public delegate void MyDelegate();public class Person{ public string Name { get; set; } public int Age { get; set; } public void ZhuangBi(原创 2015-04-16 09:53:55 · 1604 阅读 · 3 评论 -
浅谈.NET垃圾回收
本篇博客简单地从以下几个方面讨论一下.net的垃圾回收(GC)问题何时进行垃圾回收回收哪些对象回收过程和回收算法编程建议何时进行垃圾回收一般情况下,.net在创建对象时发现托管堆的内存不够用了,就会进行垃圾回收。除此之外,手动调用GCCollect()方法时也会进行回收,还有就是当windows报告低内存时以及应用程序关闭时,也都会进行垃圾回收。当.net clr试图创建原创 2017-07-01 19:14:19 · 1459 阅读 · 0 评论 -
c# async await
本篇博客来谈一下我对c#中的async和awaite关键字的理解。先来聊聊我在理解这个异步编程机制时的困惑吧。 我看了[使用 Async 和 Await 的异步编程(C# 和 Visual Basic)]这篇文章后,感觉so easy,异步方法返回一个Task<TResult>对象,凭着我对Task类的“深入理解”,我就断定:当调用一个同步方法时,由于同步方法返回的是Task,.net自动就让这个ta原创 2016-09-09 17:42:45 · 8133 阅读 · 2 评论 -
深入理解c#异步函数
在之前的博客c# async await中,我演示了如何使用async和await来实现异步编程。本篇博客来讨论async和await是如何工作的。假设有一个asp.net的接口,接收到参数后需要请求数据库,然后将结果返回,数据库操作耗时1秒钟。 当某个时间点同时有100个请求,这些请求会入队列等待资源池的调度,然后资源池分配若干个线程来处理队列中的任务,这些线程执行后开始请求数据库,由于数原创 2017-07-06 20:48:56 · 3490 阅读 · 0 评论 -
.NET线程同步之SpinLock构造
接着上一篇博客讨论了.NET线程同步的Interlocked构造,本篇博客来讨论一下SpinLock构造。Interlocked构造虽然很好用,但是它只是对一个变量或一个字段做一个原子操作,如果我们想对将一组操作封装为原子性操作,或者我们希望某段代码任何时候都不能在多个线程中同时运行,就可以使用SpinLock。我想到一个应用场景。System.Collections.Generic.St原创 2017-07-08 10:50:47 · 810 阅读 · 0 评论 -
.NET线程同步之Interlocked构造
接着上一篇博客.NET线程同步之Volatile,本篇来讨论如何使用Interlocked来处理线程安全的原子性读写操作。引出问题开始详细介绍System.Threading.Interlocked类之前,我们来先实现一个功能:在多个线程中同时增长一个公共变量。static void Main(string[] args){ Parallel.For(0, 10000,原创 2017-07-07 20:49:27 · 1550 阅读 · 0 评论 -
.NET线程同步之Volatile构造
编译器优化c#编译器会在不改变我们的意图的情况下做一些优化,比如:a = 1;a = 2;编译器编译之后,可能就只剩下第二行了。 再比如:a = 1;b = a;编译器优化后,可能会把第二行优化成b = 1 再比如:a = m;b = n;编译器生成IL时,有可能会改变两行代码的顺序。 以上变化都是在编译器认为不改变作者意图的前提下做的,如果在单线程环境下这也没有问题,但是如果是多线程环原创 2017-07-06 22:48:18 · 2035 阅读 · 0 评论 -
redis C#客户端
本篇博客介绍使用C#作为redis客户端的简单使用方法,我们会依赖ServiceStack.Redis。新建项目并添加依赖首先,打开全宇宙最强的IDE——Visual Studio,新建一个控制台应用程序,然后选择菜单[工具]=>[NuGet程序包管理器]=>[程序包管理器控制台],输入以下命令Install-Package ServiceStack.Redis原创 2015-11-30 17:24:40 · 3105 阅读 · 3 评论 -
使用CSC命令来生成项目
本篇博客来演示如何通过CSC命令来生成程序集和应用程序,而不使用VisualStudio。接下来,让我们来一步一步创建一个程序集和控制台应用程序,并通过csc命令来编译他们。原创 2016-08-07 23:52:54 · 3013 阅读 · 1 评论 -
开始使用.NET CORE
这篇博客来使用.net core编写一个简单的项目,包含一个类库项目,一个类库项目的测试项目以及一个使用了类库项目的控制台项目,然后演示如何在多项目的模式下来调试代码。原创 2021-08-18 18:34:47 · 4850 阅读 · 0 评论 -
dotnet core 命令详解
本篇博客来了解一下dotnet这个神奇的命令。我会依次对dotnet,dotnet new,dotnet restore,dotnet build,dotnet test,dotnet run,dotnet pack,dotnet publish这些个命令的用法做个简单的介绍以及演示。原创 2021-08-18 18:35:14 · 14781 阅读 · 0 评论