随笔- 672
文章- 2
评论- 325
阅读-
281万
随笔分类 - C#
C#不允许将操作符重载方法定义为泛型方法(转载)
摘要:在C#中,不允许将操作符重载方法定义为泛型方法,看看下面这篇贴子: 问 I am trying to implement a generic operator like so: class Foo { public static T operator +<T>(T a, T b) { // Do s
阅读全文
C#数组的微软官方文档(链接)
摘要:下面这篇微软官方文档,介绍了C#的数组: Arrays (C# Programming Guide) 在其中的子章节中,有介绍交错数组(jagged array): Jagged Arrays (C# Programming Guide) 数组都继承自Array类,参考下面的文档: Array Cl
阅读全文
在C#中,override的成员仍然是virtual的
摘要:我们知道在C#中,基类声明为virtual和abstract的成员,在子类中可以被override,也就是重写。其实被加上override关键字的成员,它本身也是virtual的,可以继续被子类的成员override。 新建一个.NET Core控制台项目,敲入下面的代码: using System
阅读全文
C#中,添加值类型和引用类型到List<T>集合有什么不同
摘要:新建一个.NET Core控制台项目,敲入下面代码,我们来测试将值类型和引用类型加入List<T>集合,有什么不同: using System; using System.Collections.Generic; namespace NetCoreList { //类People,是引用类型 cla
阅读全文
C#中,代码能不能访问到private或protected的成员,和当前代码是不是在类型(类、结构体)中有关,和当前代码是不是在类型(类、结构体)的对象实例中无关
摘要:在C#中,private和protected访问修饰符被广泛应用,微软对它们的定义如下: private:只有同一 class 或 struct 中的代码可以访问该类型或成员。 protected:只有同一 class 或者从该 class 派生的 class 中的代码可以访问该类型或成员。 相信大
阅读全文
使用C#中的default关键字为类型提供默认值(链接)
摘要:C#中的default关键字可以为类型提供默认值,下面是微软的官方文档,对其进行了介绍: Default values of C# types (C# reference) default value expressions (C# reference)
阅读全文
IDisposable和IAsyncDisposable接口(链接)
摘要:关于IDisposable接口,我相信大家都很熟悉了,下面是微软官方文档的介绍: IDisposable Interface Implement a Dispose method 在C# 8.0中,微软引入了IAsyncDisposable接口,下面是微软官方文档的介绍: IAsyncDisposa
阅读全文
C# 8中使用IAsyncEnumerable<T>和IAsyncEnumerator<T>,来实现异步迭代(链接)
摘要:首先,我们需要知道为什么我们要使用IAsyncEnumerable<T>和IAsyncEnumerator<T>来实现异步迭代,它有什么好处?可以参考下面这篇文章: IAsyncEnumerable In C# 8 其次,关于异步迭代的实现原理和细节,可以参考下面这篇文章: Iterating wi
阅读全文
C# ValueTask相关文章(链接)
摘要:微软官方文档介绍: ValueTask<TResult> Struct ValueTask Struct 为什么我们需要使用ValueTask,可以参考下面几篇文章: Why would one use Task<T> over ValueTask<T> in C#? Understanding t
阅读全文
关于StackExchange.Redis的一些总结
摘要:NuGet包地址: StackExchange.Redis 官网地址: StackExchange.Redis 关于StackExchange.Redis的基本用法可以查看: C# StackExchange.Redis 用法总结 其中讲到了使用StackExchange.Redis来启用分布式锁,
阅读全文
C#正则表达式超时问题(链接)
摘要:下面这篇帖子阐述了,如何使用C#中正则表达式的超时设置: How do I timeout Regex operations to prevent hanging in .NET 4.5? 在微软的官方文档中,也提到了C#正则表达式的超时问题: Defining a Time-Out Value,来
阅读全文
C#的子namespace中,可以直接访问和使用父namespace的成员
摘要:新建一个.NET Core控制台项目,敲入下面代码进行测试: using System; //定义namespace A namespace A { public class MyClassInA { } } //定义namespace A.B.C,它是namespace A的子namespace
阅读全文
C#证明静态方法中的成员在线程之间是独立的
摘要:新建一个.NET Core控制台项目,敲入下面代码: using System; using System.Threading; using System.Threading.Tasks; namespace NetCoreStaticDemo { //定义类Container,是引用类型 clas
阅读全文
C#中,隐式转换(implicit)和显式转换(explicit)重载方法,不支持将接口类型作为转换的源类型或目标类型
摘要:我们知道可以在C#的类和结构体中,定义隐式转换(implicit)和显式转换(explicit)的重载方法,也称作"用户定义的转换(User-defined conversions)"。但是其实在C#中有一个规定,就是不能将接口类型作为隐式转换和显式转换重载方法的源或目标类型。 新建一个.NET C
阅读全文
C#中JSON字符串中的转义字符
摘要:新建一个.NET Core控制台项目,然后引入Json.NET的NuGet包:Newtonsoft.Json,我们使用Json.NET将类序列化为JSON字符串,再将JSON字符串反序列化为类,代码如下: using Newtonsoft.Json; using System; namespace
阅读全文
使用文件流,读写网络共享盘
摘要:新建一个.NET Core控制台项目,使用文件流读写网络共享盘文件,如下所示: using System; using System.IO; using System.Text; namespace NetCoreShareFolderReading { class Program { static
阅读全文
关于Microsoft.Data.SqlClient(链接)
摘要:官方NuGet链接如下: Microsoft.Data.SqlClient 微软官方文档介绍: Introduction to Microsoft.Data.SqlClient namespace 另一篇很详细的介绍文章: Introducing the new Microsoft.Data.Sql
阅读全文
访问修饰符(C# 编程指南)(链接)
摘要:下面这篇微软官方文档,介绍了C#中的public、private、protected、internal等访问修饰符: Access Modifiers (C# Programming Guide) 文档中有两个地方,这里特别强调下: Classes and structs declared dire
阅读全文
抽象类为什么可以有构造函数?- Constructor of an abstract class in C#(转载)
摘要:问 Why is it possible to write constructor for an abstract class in C#?As far as I know we can't instantiate an abstract class.. so what is it for?You
阅读全文
.NET Core中创建和使用NuGet包
摘要:在.NET Core的项目中,如果我们要在项目中引用其它DLL文件,不建议直接在项目引用中添加DLL文件(虽然在.NET Core项目中也可以这么做),建议是去直接下载DLL文件所属的NuGet包。这样最大的好处是我们可以将要引用DLL文件的所有依赖文件也一起引入到项目中,这样保证了引用文件的完整性
阅读全文