<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[chenweicode的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/chenweicode</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; chenweicode]]></copyright><item><title><![CDATA[C#泛型约束]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/104801316</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/104801316</guid><author>chenweicode</author><pubDate>Thu, 09 Jun 2022 11:52:50 +0800</pubDate><description><![CDATA[泛型约束


https://www.cnblogs.com/dudu/p/set-default-startup-project-in-visual-studio.html
]]></description><category></category></item><item><title><![CDATA[协变与逆变]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/125199507</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/125199507</guid><author>chenweicode</author><pubDate>Thu, 09 Jun 2022 11:03:00 +0800</pubDate><description><![CDATA[协变：能够使用比原始指定的派生类型的派生程度更大的类型。
逆变：能够使用比原始指定的派生类型的派生类型更小的类型。]]></description><category></category></item><item><title><![CDATA[捕获未处理的异常]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/125145813</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/125145813</guid><author>chenweicode</author><pubDate>Mon, 06 Jun 2022 14:18:11 +0800</pubDate><description><![CDATA[处理程序中没有被try-catch捕获的异常，避免程序异常退出（或者在退出之前记录日志信息）。]]></description><category></category></item><item><title><![CDATA[Winfrom Chart 实时数据、滚动、缩放]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/125005396</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/125005396</guid><author>chenweicode</author><pubDate>Fri, 27 May 2022 15:54:32 +0800</pubDate><description><![CDATA[代码 代码 代码


]]></description><category></category></item><item><title><![CDATA[C#中的抽象属性]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/98849554</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/98849554</guid><author>chenweicode</author><pubDate>Thu, 08 Aug 2019 10:37:22 +0800</pubDate><description><![CDATA[代码1：


using System;
using System.Text;

namespace 抽象属性
{
    class Program
    {
        static void Main(string[] args)
        {
            Student s = new Student();
            s.Name = "渣渣辉";
...]]></description><category></category></item><item><title><![CDATA[C#中的抽象类、抽象方法]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/98766072</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/98766072</guid><author>chenweicode</author><pubDate>Wed, 07 Aug 2019 17:37:45 +0800</pubDate><description><![CDATA[代码1：


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 抽象类_抽象方法
{
    class Program
    {
        static void Main(strin...]]></description><category></category></item><item><title><![CDATA[C#中的继承、重载、覆写]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/98757389</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/98757389</guid><author>chenweicode</author><pubDate>Wed, 07 Aug 2019 16:25:59 +0800</pubDate><description><![CDATA[代码1：


using System;
using System.Text;

namespace 继承_重载_覆写
{
    class Program
    {
        static void Main(string[] args)
        {
            Person p = new Person();
            p.selfIntroduct...]]></description><category></category></item><item><title><![CDATA[Thrift白皮书（翻译）]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/96131738</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/96131738</guid><author>chenweicode</author><pubDate>Tue, 16 Jul 2019 13:58:24 +0800</pubDate><description><![CDATA[注：本文翻译自http://thrift.apache.org/static/files/thrift-20070401.pdf
Thrift:可扩展的、跨语言的服务实现
摘要
Thrift是Facebook为了促进高效、可扩展的后台服务的开发和实现而开发的一套软件库和代码生成工具集。它的主要目标是通过将各个语言中趋于大量定制的部分抽象进一个被各个语言实现的公共语言库中实现高效、可靠的跨语言通信。...]]></description><category></category></item><item><title><![CDATA[C#中的短路运算符]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/95330741</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/95330741</guid><author>chenweicode</author><pubDate>Thu, 11 Jul 2019 11:46:54 +0800</pubDate><description><![CDATA[using System;

namespace 短路运算符
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("*************************** true &amp;&amp; true ************...]]></description><category></category></item><item><title><![CDATA[C#中的TaskCompletionSource<TResult>]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/92636130</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/92636130</guid><author>chenweicode</author><pubDate>Mon, 17 Jun 2019 17:14:08 +0800</pubDate><description><![CDATA[Represents the producer side of a Task&lt;TResult&gt; unbound to a delegate, providing access to the consumer side through the Task property.
参考资料：

https://docs.microsoft.com/en-us/dotnet/api/system....]]></description><category></category></item><item><title><![CDATA[C#异步编程之async/await]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90514867</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90514867</guid><author>chenweicode</author><pubDate>Mon, 17 Jun 2019 15:12:53 +0800</pubDate><description><![CDATA[通过async/await这两个关键字编写出来的代码，代码长（zhang）的像同步编程，但实际上是异步编程。也就是说，async/await能够以同步编程的形式实现异步编程。
	async/await是C#5.0引入的。
	关键字async用在方法定义前面，关键字await只能用在async标记的方法中。
	async修饰的方法的返回值类型只能是void或者Task或者Task&lt;T&gt;这...]]></description><category></category></item><item><title><![CDATA[C#中的Task]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/91413736</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/91413736</guid><author>chenweicode</author><pubDate>Thu, 13 Jun 2019 16:59:28 +0800</pubDate><description><![CDATA[Task的优势
ThreadPool相比Thread来说具备了很多优势，但是ThreadPool存在一些使用上的不方便。比如：ThreadPool不支持线程的取消、完成、失败通知等交互性操作；ThreadPool不支持线程执行的先后顺序。以往，如果开发者要实现上述功能，需要完成很多额外的工作。现在，FCL（Framework Class Library）提供了一个功能更加强大的概念：Task。T...]]></description><category></category></item><item><title><![CDATA[C#中的Task.Delay()和Thread.Sleep()]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/91372281</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/91372281</guid><author>chenweicode</author><pubDate>Mon, 10 Jun 2019 19:04:13 +0800</pubDate><description><![CDATA[Thread.Sleep()是同步延迟，Task.Delay()是异步延迟。
	Thread.Sleep()会阻塞线程，Task.Delay()不会。
	Thread.Sleep()不能取消，Task.Delay()可以。
	Task.Delay()实质创建一个运行给定时间的任务，Thread.Sleep()使当前线程休眠给定时间。
	反编译Task.Delay()，基本上讲它就是个包裹在任务中的...]]></description><category></category></item><item><title><![CDATA[C#中的CancellationTokenSource]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90904438</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90904438</guid><author>chenweicode</author><pubDate>Wed, 05 Jun 2019 17:48:20 +0800</pubDate><description><![CDATA[CancellationTokenSource用于取消基于Task建立的线程（单个线程、多个线程都可以）。
	定时取消也是可以的。
	可以通过合并多个cts，达到其中一个任务取消，则任务全部取消的效果。
参考资料：

https://www.cnblogs.com/majiang/p/7920102.html（目前还看不懂）

https://www.cnblogs.com/luohengstud...]]></description><category></category></item><item><title><![CDATA[C#中的Action和Func（范型委托）]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90811870</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90811870</guid><author>chenweicode</author><pubDate>Wed, 05 Jun 2019 09:18:21 +0800</pubDate><description><![CDATA[以前使用委托需要定义委托然后绑定方法，不够简洁。

现在通过Action和Func可以简化委托的使用。

Action&lt;T1,T2,T3,T4,...&gt;表示有n个参数（参数类型可以不同），但没有返回值的委托。

Func&lt;T1,T2,T3,T4,...,TResult&gt;表示有n个参数（参数类型可以不同）且有一个返回值的委托（返回值类型为TResult）。

参考资料：

h...]]></description><category></category></item><item><title><![CDATA[C#中的IEnumerable]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90762523</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90762523</guid><author>chenweicode</author><pubDate>Tue, 04 Jun 2019 17:07:45 +0800</pubDate><description><![CDATA[在MSDN上，是这么说的，它是一个公开枚举数，该枚举数支持在非范型集合上进行简单的迭代。

参考资料（非常好）：

https://www.cnblogs.com/fangyz/p/5721269.html

https://blog.youkuaiyun.com/weixin_42339460/article/details/80733758

以下为本人的调试代码：

代码1：


using Syste...]]></description><category></category></item><item><title><![CDATA[C#参数列表中的params]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90764738</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90764738</guid><author>chenweicode</author><pubDate>Tue, 04 Jun 2019 11:28:59 +0800</pubDate><description><![CDATA[在参数数目可变时采用方法参数params。
	params关键字之后不允许任何其他参数，并且在方法声明中只允许一个params关键字。
	params不允许与ref\out组合使用。
	params在你不知道参数数量时显得很有用，虽然也可以使用List等集合代替，但是params显得更直观。
	params只能用于一维数组，不能用于多维数组和诸如ArrayList、List&lt;T&gt;等类似...]]></description><category></category></item><item><title><![CDATA[C#参数列表中的this（扩展方法）]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90715439</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90715439</guid><author>chenweicode</author><pubDate>Fri, 31 May 2019 18:10:37 +0800</pubDate><description><![CDATA[参数列表中this的这种用法是在.NET 3.0之后新增的一种特性---扩展方法。通过这个属性可以让程序员在现有的类型上添加扩展方法（无需创建新的派生类型、重新编译或者以其他方式修改原始类型）。
	扩展方法是一种特殊的静态方法，虽然是静态方法，但是可以像使用类型上的实例方法一样去使用扩展方法（调用扩展方法与调用在类型中实际定义的方法之间没有明显的差异）。
	扩展方法的第一个参数指定该方法作用于哪个...]]></description><category></category></item><item><title><![CDATA[C#中的静态类、静态成员、静态构造函数]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90702347</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90702347</guid><author>chenweicode</author><pubDate>Fri, 31 May 2019 10:51:50 +0800</pubDate><description><![CDATA[静态类
	
关键字static修饰的类称之为静态类。
	静态类不能实例化。
	static关键字可以防止程序员写代码实例化静态类，也可以防止在静态类的内部声明任何实例成员。
	C#编译器会自动把静态类标记为sealed，这个关键字将类指定为不可扩展（不能从它派生出其他类）。
	静态类特性：仅包含静态成员；无法实例化；属于密封类；不能包含实例构造函数（但可以包含静态构造函数）。

	静态成员
	...]]></description><category></category></item><item><title><![CDATA[C#中的状态机]]></title><link>https://blog.youkuaiyun.com/chenweicode/article/details/90668452</link><guid>https://blog.youkuaiyun.com/chenweicode/article/details/90668452</guid><author>chenweicode</author><pubDate>Wed, 29 May 2019 13:40:50 +0800</pubDate><description><![CDATA[状态机是一种记录状态的机器。迭代器中的yield return每次调用时返回一个元素并阻塞，再次调用时从阻塞处继续执行，靠的就是状态机，状态机为其记录了上下文的状态（迭代器中状态机记录的是迭代器游标）。

参考资料：https://blog.youkuaiyun.com/qq_31116753/article/details/81366669
...]]></description><category></category></item></channel></rss>