09 2021 档案

摘要:原文地址:https://zhuanlan.zhihu.com/p/3161634 C#的闭包,是一个语法糖。 它实质上是将匿名函数转换成一个类,函数作为其中的类方法,并调整外部调用代码来实现的。既然是对象,自然就有自己的堆内存分配。 但它并不是无脑地每次创建委托就生成一个新的对象,而是做了编译期间 阅读全文
posted @ 2021-09-30 19:02 小林野夫 阅读(129) 评论(0) 推荐(0) 编辑
摘要:函数式编程 函数式编程(英語:functional programming)或称函数程序设计、泛函编程,是一种编程范式,它将电脑运算视为函数运算,并且避免使用程式状态以及易变物件。其中,λ演算为该语言最重要的基础。而且,λ演算的函数可以接受函数作为输入參數和输出返回值。 比起指令式編程,函數式編程更 阅读全文
posted @ 2021-09-30 16:53 小林野夫 阅读(518) 评论(0) 推荐(0) 编辑
摘要:如何理解面向对象的基本特征:封装 我们通过接口 、struct、枚举、委托、泛型、匿名函数的去理解封装 接口 、struct、枚举、委托、泛型、匿名函数有什么区别?我们通过这些IL探究真相,案例如下: class Program { private int se; private delegate 阅读全文
posted @ 2021-09-30 11:34 小林野夫 阅读(68) 评论(0) 推荐(0) 编辑
摘要:目录 委托的申明 委托的赋值 泛型委托 委托实例方法的使用C#Invoke\BeginInvoke\Endinoke 系统自带的委托Action、Action<T>、Func<T>、Predicate<T> delegate类方法的使用 MulticastDelegate 多播委托 委托的调用列表 阅读全文
posted @ 2021-09-30 11:24 小林野夫 阅读(246) 评论(0) 推荐(0) 编辑
摘要:在C#里面,变量作用域有三种,一种是属于类的,我们常称之为field,第二种则属于函数的,我们通常称之为局部变量,还有一种,其实也是属于函数的,不过它的作用范围更小,它只属于函数局部的代码片段,这种同样称之为局部变量.这三种变量的生命周期基本都可以用一句话来说明,每个变量都属于它所寄存的对象,即变量 阅读全文
posted @ 2021-09-29 16:08 小林野夫 阅读(37) 评论(0) 推荐(0) 编辑
摘要:闭包的概念 闭包是一个代码块(在C#中,指的是匿名方法或者Lambda表达式,也就是匿名函数),并且这个代码块使用到了代码块以外的变量,于是这个代码块和用到的代码块以外的变量(上下文)被“封闭地包在一起”。当使用此代码块时,该代码块里使用的外部变量的值,是使用该代码块时的值,并不一定是创建该代码块时 阅读全文
posted @ 2021-09-29 12:30 小林野夫 阅读(3234) 评论(0) 推荐(0) 编辑
摘要:C#函数式程序设计 CLR via C# 第4版 C# 编程指南 编译原理 阅读全文
posted @ 2021-09-29 11:54 小林野夫 阅读(160) 评论(0) 推荐(0) 编辑
摘要:因为所有的类都可以被继承,为了防止类的继承被滥用,C#中提出了密封类的概念。 如果想声明一个类,并且该类不能被其他类所继承。那么使用sealed关键字可以将类和方法封闭起来,使类不能被继承,方法不能被重写 sealed class FinalClass { } 密封类不可以被继承,但是可以继承其他类 阅读全文
posted @ 2021-09-28 22:51 小林野夫 阅读(405) 评论(0) 推荐(0) 编辑
摘要:函数的每次调用都有与之紧密相关的作用域和上下文。从根本上来说,作用域是基于函数的,而上下文是基于对象的。 https://www.cnblogs.com/sxhlf/p/6727486.html https://blog.csdn.net/shyc1922/article/details/68764 阅读全文
posted @ 2021-09-28 21:29 小林野夫 阅读(156) 评论(0) 推荐(0) 编辑
摘要:目录 匿名方法定义 匿名方法的声明匿名方法的使用范围捕获局部变量或实例状态匿名函数会捕获变量,并延长对象的生命周期结束匿名方法捕获局部变量-静态匿名函数 匿名方法定义: 匿名方法是没有名称只有主体的方法。 在匿名方法中您不需要指定返回类型,它是从方法主体内的 return 语句推断的。 匿名方法是通 阅读全文
posted @ 2021-09-28 19:20 小林野夫 阅读(826) 评论(0) 推荐(0) 编辑
摘要:计算机组成原理 1、为什么计算的补数(补码)=反码+1? 题目 http://blog.zhaojie.me/2011/03/my-interview-questions-for-dotnet-programmers.html 1、考察对常量和自读字段 初始化过程的了解 static readonl 阅读全文
posted @ 2021-09-28 14:22 小林野夫 阅读(153) 评论(0) 推荐(0) 编辑
摘要:常量的定义 常量是在编译时设置其值并且永远不能更改其值的字段。 使用常量可以为特殊值提供有意义的名称,而不是数字文本 常量是不可变的值,在编译时是已知的,在程序的生命周期内不会改变。 常量使用 const 修饰符声明。 仅 C# 内置类型(不包括 System.Object)可声明为 const。 阅读全文
posted @ 2021-09-28 13:50 小林野夫 阅读(1097) 评论(0) 推荐(0) 编辑
摘要:逆变(Contravariance)/协变(Covariance) 1. 基本概念 官方: 协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。协变/逆变只支持委托、泛型接口。数组由于历史的原因 阅读全文
posted @ 2021-09-26 21:58 小林野夫 阅读(453) 评论(0) 推荐(0) 编辑
摘要:强制转换和类型转换 隐式转换:由于这种转换始终会成功且不会导致数据丢失,因此无需使用任何特殊语法。 示例包括从较小整数类型到较大整数类型的转换以及从派生类到基类的转换。 显式转换(强制转换) :必须使用 强制转换表达式,才能执行显式转换。 在转换中可能丢失信息时或在出于其他原因转换可能不成功时,必须 阅读全文
posted @ 2021-09-26 19:40 小林野夫 阅读(245) 评论(0) 推荐(0) 编辑
摘要:SOLID:面向对象设计的五个基本原则 文|阿里巴巴淘系技术 田航(马刺) 在程序设计领域,SOLID 是由罗伯特·C·马丁在 21 世纪早期引入的记忆术首字母缩略字,指代了面向对象编程和面向对象设计的五个基本原则。当这些原则被一起应用时,能够使得一个程序员开发一个容易进行维护和扩展的系统变得更加可 阅读全文
posted @ 2021-09-26 18:15 小林野夫 阅读(236) 评论(0) 推荐(0) 编辑
摘要:StopWatch 时间计数器简介: Stopwatch 可以测量一个时间间隔的运行时间,也可以测量多个时间间隔的总运行时间。一般用来测量代码执行所用的时间或者计算性能数据,在优化代码性能上可以使用Stopwatch来测量时间。 在多处理器计算机上,线程在哪个处理器上运行并不重要。 但是,由于 BI 阅读全文
posted @ 2021-09-26 14:59 小林野夫 阅读(457) 评论(0) 推荐(0) 编辑
摘要:在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。 数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。 //数组 string[] s=new string[2]; //赋值 s[0]="a"; s[1 阅读全文
posted @ 2021-09-26 13:58 小林野夫 阅读(480) 评论(0) 推荐(0) 编辑
摘要:参考链接:https://www.cnblogs.com/tdfblog/p/Nullable-Types-in-Csharp-Net.html https://www.cnblogs.com/minotauros/p/10041644.html 启用 可空上下文 从C#8.0开始,我们可以通过启用 阅读全文
posted @ 2021-09-25 16:54 小林野夫 阅读(225) 评论(0) 推荐(0) 编辑
摘要:1. 可空类型修饰符(?):引用类型可以使用空引用表示一个不存在的值,而值类型通常不能表示为空。例如:string str=null; 是正确的,int i=null; 编译器就会报错。为了使值类型也可为空,就可以使用可空类型,即用可空类型修饰符"?"来表示,表现形式为"T?"例如:int? 表示可 阅读全文
posted @ 2021-09-25 14:19 小林野夫 阅读(3182) 评论(0) 推荐(0) 编辑
摘要:两种方式实现表链:第二种性能差 using System; using System.Collections; namespace Galaxy { class Program { static void Main(string[] args) { SnakList<string> san = ne 阅读全文
posted @ 2021-09-24 11:50 小林野夫 阅读(55) 评论(0) 推荐(0) 编辑
摘要:原文:https://www.cnblogs.com/huguodong/p/12694902.html 一、前言 VisualStudio 可以通过敲出缩写字符串,然后按两次Tab按键自动展开成一段对应语义的代码。 敲缩写cw: 然后按两次Tab会自动展开成 我们可以通过VisualStudio中 阅读全文
posted @ 2021-09-23 20:32 小林野夫 阅读(204) 评论(0) 推荐(0) 编辑
摘要:再这个案例中我们,为什么要使用泛型约束 使用约束的原因 约束指定类型参数的功能和预期。 声明这些约束意味着你可以使用约束类型的操作和方法调用。 如果泛型类或 方法对泛型成员使用除简单赋值之外的任何操作或调用 System.Object 不支持的任何方法,则将对类型参数应用 约束。 例如,基类约束告诉 阅读全文
posted @ 2021-09-23 19:25 小林野夫 阅读(148) 评论(0) 推荐(0) 编辑
摘要://本文是根据C#编程指南修改的。编程指南很多是机器翻译的,很多句子根本读不懂。所以本人就把读不懂地方标出来。 不理解 :1、defalut约束 2、泛型接口不理解的地方 3、泛型方法中的不理解的地方 一、文章目录 1、泛型的简介绍 2、泛型类型参数命名指南 3、类型参数的约束 3.1为什么要使用类 阅读全文
posted @ 2021-09-23 17:28 小林野夫 阅读(104) 评论(0) 推荐(0) 编辑
摘要:官方:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/interfaces/explicit-interface-implementation 本示例声明一个接口IDimensions 和一个类 Box,显式实现了接口 阅读全文
posted @ 2021-09-22 22:44 小林野夫 阅读(1275) 评论(0) 推荐(1) 编辑
摘要:在类、结构或接口中定义的类型称为嵌套类型。 例如 public class Container { class Nested { Nested() { } } } 不论外部类型是类、接口还是构造,嵌套类型均默认为 private;仅可从其包含类型中进行访问。 在上一个示例中,Nested 类无法访问 阅读全文
posted @ 2021-09-22 10:14 小林野夫 阅读(230) 评论(0) 推荐(0) 编辑
摘要:反编译后,迭代器用的是状态机,栈本身就是状态机,由于协程本身也有栈, 我怀疑C#中的 迭代器和基于任务的异步编程是协程(未经过验证) .class nested private auto ansi sealed beforefieldinit '<GetEnumerator>d__12' exten 阅读全文
posted @ 2021-09-22 01:52 小林野夫 阅读(105) 评论(0) 推荐(0) 编辑
摘要:.ctor,.cctor 以及 对象的构造过程 一点关于.ctor、.cctor以及对象构造过程的总结 .ctor(structor): 简述:构造函数,在类被实例化时,它会被自动调用。 当C#的类被编译后,在IL代码中会出现一个名为.ctor的方法,它就是我们的构造函数,对应C#中的构造函数。且看 阅读全文
posted @ 2021-09-20 13:26 小林野夫 阅读(887) 评论(0) 推荐(1) 编辑
摘要:探讨关于C#中Foreach的本质 要实现foreach需要满足什么条件? 只要类中实现类中的GetEnumerator()方法、MoveNext()方法、Current属性(俗称鸭子类型)都可以使用foreach进行遍历。 所以只要继承IEnumerable或IEnumerator、集合类、数组 阅读全文
posted @ 2021-09-20 12:48 小林野夫 阅读(518) 评论(0) 推荐(0) 编辑
摘要:总结:1、扩展方法最好单独放在一个命名空间里面。 2、扩展方法必须是放在静态类里面,扩展方法的定义必须具有文件作用域,也就是说必须在文件中某个命名空间下直接定义,不能嵌套在另一个类中定义; 3、扩展方法必须是静态方法,扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。说明静态方法相当被扩 阅读全文
posted @ 2021-09-19 15:18 小林野夫 阅读(3864) 评论(0) 推荐(0) 编辑
摘要:原文:https://www.cnblogs.com/luminji/archive/2011/03/29/1997812.html IDisposable高级篇:https://docs.microsoft.com/zh-cn/dotnet/standard/garbage-collection/ 阅读全文
posted @ 2021-09-19 01:05 小林野夫 阅读(184) 评论(0) 推荐(0) 编辑
摘要:接口就是一种抽象类,接口扶着抽象动作行为,抽象类负责抽象类,结构负责抽象数据。 总结: (1)接口是对一类事物属性和行为的高度抽象,对修改关闭,对扩展开放,接口是开闭原则的一种体现 (2)抽象类是“不完全”的类,是接口和具体类的一个中间层,既满足接口的抽象,又满足具体的实现 区别: (1)abstr 阅读全文
posted @ 2021-09-18 18:35 小林野夫 阅读(894) 评论(0) 推荐(0) 编辑
摘要:析构方法是在垃圾回收、释放资源时使用的。析构函数用于析构类的实例。备注: 不能在结构中定义析构函数。只能对类使用析构函数。 一个类只能有一个析构函数。 无法继承或重载析构函数。 无法调用析构函数。它们是被自动调用的。 析构函数既没有修饰符,也没有参数。析构方法的定义语法形式如下。!!!!!!!!!! 阅读全文
posted @ 2021-09-18 17:58 小林野夫 阅读(1355) 评论(0) 推荐(0) 编辑
摘要:糕点就是实例 磨具就是类:磨具提供生产糕点的方法、外观等 这就是静态成员,他属于磨具。 对于静态成员的和实例存储区域的理解 糕点生产出来以后单独放在礼品盒里面,不可能盒和磨具一起打包出售,所以他们存储区自然不一样。那么类和实例的存储道理不也是一样的 阅读全文
posted @ 2021-09-18 14:44 小林野夫 阅读(42) 评论(0) 推荐(0) 编辑
摘要:原理:静态成员是和实例成员的存储和管理方式不一样。 静态成员:被static修饰的成员,叫做静态成员。静态成员是属于类的。通过类名直接访问。 当类第一次被访问的时候,就会将这个类下面的所有的静态成员创建在内存当中。 静态成员既不在栈也不在堆中。创建在静态存储区。 静态成员只创建一次,在类第一次被访问 阅读全文
posted @ 2021-09-18 14:06 小林野夫 阅读(293) 评论(0) 推荐(0) 编辑
摘要:构造函数(C# 编程指南) 构造函数概述 使用构造函数 构造函数分类 实例构造函数 私有构造函数 静态构造函数 构造函数概述 每当创建类或结构时,将会调用其构造函数。 类或结构可能具有采用不同参数的多个构造函数。 使用构造函数,程序员能够设置默认值、限制实例化,并编写灵活易读的代码。 有关详细信息和 阅读全文
posted @ 2021-09-18 11:45 小林野夫 阅读(385) 评论(0) 推荐(0) 编辑
摘要:IEnumerable 和 IEnumerator 的 泛型版本是新式代码的首要选项。IEnumerable<T> 和 IEnumerator<T> IEnumerable<T>的应用 写两个类一个是学生、一个是班级。逻辑上学生是属于班级这个集合的,按理来说是可以直接使用foreach直接遍历出班级 阅读全文
posted @ 2021-09-17 20:33 小林野夫 阅读(204) 评论(0) 推荐(0) 编辑
摘要:摘 要 属性允许将数据成员作为公共接口的一部分暴露出去,同时仍旧提供面向对象环境下所需要的封装。属性这个语言元素可以让你像访问数据成员一样使用,但底层依旧使用方法实现。通过使用属性我们可以创建出类似于数据访问(客户代码在访问属性时,就像是在访问共有的字段),但实际上确是方法调用的接口... 属性允许 阅读全文
posted @ 2021-09-17 18:02 小林野夫 阅读(33) 评论(0) 推荐(0) 编辑
摘要:总结 只要类中有类似于属性的元素就应创建索引器,此属性代表的不是一个值,而是值的集合,其中每一个项由一组参数标识。 这些参数可以唯一标识应引用的集合中的项。 索引器延伸了属性的概念,索引器中的一个成员被视为类外部的一个数据项,但又类似于内部的一个方法。 索引器允许参数在代表项的集合的属性中查找单个项 阅读全文
posted @ 2021-09-17 16:36 小林野夫 阅读(400) 评论(0) 推荐(0) 编辑
摘要:有的编程语言允许一个类型定义操作符应该如何操作类型的实例,比如string类型和int类型都重载了(==)和(+)等操作符,当编译器发现两个int类型的实例使用+操作符的时候,编译器会生成把两个整数加到一起的代码。 当编译器发现两个string类型的实例使用+操作符的时候,编译器会生成把两个字符串连 阅读全文
posted @ 2021-09-17 15:48 小林野夫 阅读(141) 评论(0) 推荐(0) 编辑
摘要:原文地址: Click Here 操作符重载必须用public static 应为操作符是用来操作实例的。 operator operator 关键字用于在类或结构声明中声明运算符。运算符声明可以采用下列四种形式之一: public static result-type operator unary 阅读全文
posted @ 2021-09-17 15:14 小林野夫 阅读(240) 评论(0) 推荐(0) 编辑
摘要:C# 语言经过专门设计,以便不同库中的基类与派生类之间的版本控制可以不断向前发展,同时保持向后兼容。这具有多方面的意义。例如,这意味着在基类中引入与派生类中的某个成员具有相同名称的新成员在 C# 中是完全支持的,不会导致意外行为。它还意味着类必须显式声明某方法是要重写一个继承方法,还是一个仅隐藏具有 阅读全文
posted @ 2021-09-17 10:04 小林野夫 阅读(138) 评论(0) 推荐(0) 编辑
摘要:1.C#4个修饰符的权限修饰符 级别 适用成员 解释public 公开 类及类成员的修饰符 对访问成员没有级别限制private 私有 类成员的修饰符 只能在类的内部访问protected 受保护的 类成员的修饰符 在类的内部或者在派生类中访问,不管该类和派生类是不是在同一程序集中internal 阅读全文
posted @ 2021-09-16 18:42 小林野夫 阅读(1129) 评论(0) 推荐(0) 编辑
摘要:对象初始值设和集合初始值设定项 对象初始值设定项的工作原理: init访问器,本质上就是在对象初始化时候给内部字段(实例)赋值。 init就 modreq([System.Runtime]System.Runtime.CompilerServices.IsExternalInit) 类型的缩写 mo 阅读全文
posted @ 2021-09-16 13:20 小林野夫 阅读(101) 评论(0) 推荐(0) 编辑
摘要:OpCode的全称OpCode就是Operation Code,意即操作码的意思。 以上内容 来源https://blog.csdn.net/drgreentea/article/details/6283485 使用心得 .maxstack:评估堆栈(Evaluation Stack)可容纳数据项的 阅读全文
posted @ 2021-09-15 19:38 小林野夫 阅读(760) 评论(0) 推荐(0) 编辑
摘要:补充知识点:opcode 在前面我们已经知道了,由于计算机只认识0和1,所以,源代码“NOP”是无法直接运行的。当Assembler遇到“NOP”的时候,为了生成让计算机能运行的“东西”(暂且这样称呼吧),就会以十六进制数“0x90”来代替它。 在这里,“0x90”就是“OpCode ”,而“NOP 阅读全文
posted @ 2021-09-15 19:29 小林野夫 阅读(646) 评论(0) 推荐(0) 编辑
摘要:Property 是什么意思? property表示属性,即属固有的特性。比如: ”人“是属,人固有的特性是,姓名、性别、年龄。 “小明”是第一实体, ”人“是第二实体,人是小明这个体的属。小明自然继承”人“属所固有的特性,即小明也具有姓名、性别、年龄特性。对于小明这个个体来说,姓名、性别、年龄是属 阅读全文
posted @ 2021-09-15 17:48 小林野夫 阅读(817) 评论(0) 推荐(0) 编辑
摘要:这是c#中的“属性”假如某个类中有一个成员变量(字段),一般是不允许外部访问的,为了安全性如果要访问它,必须通过“属性”来访问,例如:private int Id; //这是一个成员变量,private表示是私有的,外部不可访问public int ID{get { return id; } //当 阅读全文
posted @ 2021-09-15 16:38 小林野夫 阅读(484) 评论(0) 推荐(0) 编辑
摘要:匿名函数的定义和用途 匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用。 可以使用匿名函数来初始化命名委托[无需取名字的委托],或传递命名委托(而不是命名委托类型,传递一个方法块,而不是委托类型)[callback的方式]作为方法参数。 两种匿名函数# 共有两种匿名函数,以下主题分 阅读全文
posted @ 2021-09-14 20:03 小林野夫 阅读(284) 评论(0) 推荐(0) 编辑
摘要:前言-总结 泛型编程作为.NET体系中一个很重要的编程思想,主要有以下亮点: 编译期确定类型,避免值类型的拆装箱和不必要的运行时类型检验,同样运行时也能通过is和as进行类型检验。 泛型方法性能==普通方法>Object方法(需要装箱拆箱) 通过约束进行对类型参数实例化的范围 同时在IL层面,实例化 阅读全文
posted @ 2021-09-13 23:49 小林野夫 阅读(76) 评论(0) 推荐(0) 编辑
摘要:1. CLR C#.NET 平台下,代码是怎么运行的 源代码——》托管模块——》程序集—JIT—》编程CPU指令 1.1 在.NET框架下,首先将源代码编译为托管模块 CLR编译过程:C#源码文件——(C#编译器编译)——》托管模块 托管模块是一个需要CLR环境才能执行的标准windows PE文件 阅读全文
posted @ 2021-09-13 23:44 小林野夫 阅读(427) 评论(0) 推荐(0) 编辑
摘要:1、System.Console.WriteLine(类的实例)默认调用类的Tostring()方法。如果自定义的新类未override ToString()方法。那么调用Object.ToString()方法,输出类名。 2、详细https://www.cnblogs.com/SilentCode 阅读全文
posted @ 2021-09-13 23:27 小林野夫 阅读(171) 评论(0) 推荐(0) 编辑
摘要:.NET 5+ 中已过时的功能 数组淘汰 .NET Framework 2以上的版本中,ArrayList可以说已经被淘汰了,应该用泛型类中的List<T> https://www.cnblogs.com/cdaniu/p/15936840.html Thread类淘汰的方法 Abort() .ne 阅读全文
posted @ 2021-09-13 22:12 小林野夫 阅读(514) 评论(0) 推荐(0) 编辑
摘要:string提供了按字母进行排序 int整数则是根据整数大小进行排序 阅读全文
posted @ 2021-09-13 20:06 小林野夫 阅读(37) 评论(0) 推荐(0) 编辑
摘要:IEnumerable<T> 和 IEnumerator<T>。泛型版本是新式代码的首要选项。 InvariantCulture:程序间、程序数据库、程序网络交互用InvariantCulture invariant是基于en-US文化,但是与en-US还是有区别的。 例如:不变文化使用国际符号作为 阅读全文
posted @ 2021-09-13 18:08 小林野夫 阅读(162) 评论(0) 推荐(0) 编辑
摘要:问题:瑞典文字的“æ”在控制台中无法正确的显示? String[] strings1 = { "case", "encyclopædia", "encyclopædia", "Archæology" }; 程序运行后 显示效果如下: 我们通过在控制台的标题栏点击右键》属性,查看当前控制台显示所用的编 阅读全文
posted @ 2021-09-13 01:37 小林野夫 阅读(1845) 评论(0) 推荐(0) 编辑
摘要:当发现Visual Studio 的快捷不能用时候,我们只要选择重置就可以用了。 阅读全文
posted @ 2021-09-13 01:27 小林野夫 阅读(97) 评论(0) 推荐(0) 编辑
摘要:下载主题插件:Color Themes for Visual Studio 安装插件 下载完成后 关闭vs2019 完成初始化,初始化完成后,再次打开软件进行配置。 卸载插件 点击卸载,然后关闭vs2019 ,关闭后执行卸载配资。 阅读全文
posted @ 2021-09-13 00:31 小林野夫 阅读(1278) 评论(0) 推荐(0) 编辑
摘要:文件编码格式 阶段一:ASCII 阶段二:ANSI(本地化) 如:GBK、GB2312 阶段三:UNICODE(国际化) 如:UTF-8 ASCII(American Standard Code for Information Interchange,美国信息互换标准代码)是一套基于拉丁字母的字符编 阅读全文
posted @ 2021-09-12 15:54 小林野夫 阅读(1557) 评论(0) 推荐(0) 编辑
摘要:总结起来为啥需要Unicodey就是为了适应全球化的发展,便于不同语言之间的兼容交互,而ASCII不再能胜任此任务了 UTF-8 与UTF-16的区别 UTF-8的优缺点 程序员那么到底该如何选择呢? 为啥需要Unicode 我们知道计算机其实挺笨的,它只认识0101这样的字符串,当然了我们看这样的 阅读全文
posted @ 2021-09-12 15:51 小林野夫 阅读(1330) 评论(0) 推荐(1) 编辑
摘要:在项目中经常会用到字符串比较,但是有时候对字符串的操作比较多,规则各异。比如有的地方我们需要用排序规则,有的地方需要忽略大小写,我们该如何写一个比较容易操作的比较方法呢?重新实现IComparer接口不失为一个好办法。 IComparable.CompareTo 方法 在MSDN上是这么解释(机器翻 阅读全文
posted @ 2021-09-11 23:39 小林野夫 阅读(990) 评论(0) 推荐(0) 编辑
摘要:Array.Sort(vv, string.CompareOrdinal); //ASCII排序 string[] words = { "The", "1quick", "brown", "fox", "jumps", "over", "the", "lazy", "dog." }; string 阅读全文
posted @ 2021-09-11 21:12 小林野夫 阅读(83) 评论(0) 推荐(0) 编辑
摘要:帕斯卡命名法 命名规则. 单字之间不以空格断开或 连接号 (-)、底线(_)连结,第一个单词首字母采用 大写字母 ;后续单词的首字母亦用大写字母,例如:FirstName、LastName。. 每一个单词的首字母都采用大写字母的命名格式,被称为" Pascal 命名法",源自于 Pascal语言 的 阅读全文
posted @ 2021-09-11 14:48 小林野夫 阅读(408) 评论(0) 推荐(0) 编辑
摘要:原文链接:https://www.cnblogs.com/edisonchou/p/4088959.html 匿名类型就是匿名类 一、匿名类:[ C# 3.0/.NET 3.x 新增特性 ] 匿名类声明一 var annoyCla1 = new {ID=1 }; Console.WriteLine( 阅读全文
posted @ 2021-09-11 14:26 小林野夫 阅读(2338) 评论(0) 推荐(0) 编辑
摘要:CLR要求所有对象(实例)都用new操作符创建,那么new操作符做了哪些事呢?1. 计算字节数 计算类型及其所有基类型(父类)中定义的所有实例字段需要的字节数。堆上每个对象都需要一些额外的成员,包括“类型对象指针”和“同步块索引”。CLR利用这些成员管理对象。2. 给对象分配内存 从托管堆中分配类型 阅读全文
posted @ 2021-09-11 13:50 小林野夫 阅读(985) 评论(0) 推荐(0) 编辑
摘要:在 C# 中,数组实际上是对象,而不只是如在 C 和 C++ 中的连续内存的可寻址区域。 交错数组是数组的数组,因此其元素为引用类型且被初始化为 null 。new 运算符 用于在堆上创建对象。所以数组需要用new声明来给数组在堆上开一个存储空间。 值类型和引用类型数组 SomeType[] arr 阅读全文
posted @ 2021-09-11 02:11 小林野夫 阅读(629) 评论(0) 推荐(0) 编辑
摘要:Glob 语法及解析 目录 1. glob 简介 2. glob 语法 3. .gitignore 4. Python glob 1 glob 简介 glob 是用于匹配符合指定模式的文件集合的一种语言, 类似于正则表达式, 但更加简单。 Update-09-22: 前两天阮一峰老师更新了他的博客, 阅读全文
posted @ 2021-09-10 23:26 小林野夫 阅读(384) 评论(0) 推荐(0) 编辑
摘要:Nuget介绍 官网定义:NuGet是.NET的软件包管理器(免费)。NuGet客户端工具提供了生成和使用软件包的能力。NuGet Gallery 是所有软件包作者和消费者都使用的中央软件包存储库。 简单来说,nuget包解决了dll引用的问题,开发者可以通过打包,然后发布到公有主机或者私有主机上, 阅读全文
posted @ 2021-09-10 22:35 小林野夫 阅读(3808) 评论(0) 推荐(0) 编辑
摘要:分布式缓存框架: Microsoft Velocity:微软自家分布式缓存服务框架。 Memcahed:一套分布式的高速缓存系统,目前被许多网站使用以提升网站的访问速度。 Redis:是一个高性能的KV数据库。 它的出现很大程度补偿了Memcached在某些方面的不足。 EnyimMemcached 阅读全文
posted @ 2021-09-10 15:55 小林野夫 阅读(230) 评论(0) 推荐(0) 编辑
摘要:C# (Struct)结构的介绍 在 C# 中,所有简单值类型都是结构类型。结构类型是一种可封装数据和相关功能的值类型 ,是隐式密封的值类型,不可继承。 使用 struct 关键字定义结构类型。struct 语句为程序定义了一个带有多个成员的新的数据类型。例如,.NET 使用结构类型来表示数字(整数 阅读全文
posted @ 2021-09-08 01:29 小林野夫 阅读(617) 评论(0) 推荐(1) 编辑
摘要:我们重点来讲解 简单枚举和标志枚举的用法和区别 继承 Object-> ValueType ->Enum Object-> ValueType ->struct 包括int float等简单值类型 Object-> ValueType ->ValueTuple Object-> ValueType 阅读全文
posted @ 2021-09-07 09:51 小林野夫 阅读(13728) 评论(0) 推荐(2) 编辑
摘要:算术运算:(+,-,*,/)时,只要一个为null,则结果为null。 比较运算符: <、>、<= 和 >=,也是如此。如果一个或全部两个操作数都为 null,则结果为 false。 相等运算符: ==,如果两个操作数都为 null,则结果为 true;如果只有一个操作数为 null,则结果为 fa 阅读全文
posted @ 2021-09-06 17:03 小林野夫 阅读(101) 评论(0) 推荐(0) 编辑
摘要:C#中default关键字用法简介 default 关键字可在switch语句或泛型代码中使用。switch语句:指定默认标签。泛型代码:指定类型参数的默认值。对于引用类型为空,对于值类型为零switch语句在switch语句中,如果没有任何case表达式与开关值匹配,则控制传递给跟在可选defau 阅读全文
posted @ 2021-09-06 10:35 小林野夫 阅读(303) 评论(0) 推荐(0) 编辑
摘要:CultureInfo、DateTimeFormatInfo、NumberFormatinfo之间的关系 线程中CurrentCulture和CurrentUICulture 区别 以下是win10操作系统中的CurrentCulture和CurrentUICulture ,线程中CurrentCu 阅读全文
posted @ 2021-09-05 16:17 小林野夫 阅读(83) 评论(0) 推荐(0) 编辑
摘要:在C#中DateTime是一个包含日期、时间的类型,此类型通过ToString()转换为字符串时,可根据传入给Tostring()的参数转换为多种字符串格式。da 定义 dateTime 格式化依赖于DateTimeFormatInfo 类,DateTimeFormatInfo对象的格式化值取决于当 阅读全文
posted @ 2021-09-05 15:09 小林野夫 阅读(5086) 评论(0) 推荐(0) 编辑
摘要:1、内插字符 串取代 字符串复合格式设置 使用这个写法: Console.WriteLine($"Hello, {name}! Today is {date.DayOfWeek}, it's {date:HH:mm} now."); 淘汰以下写法: Console.WriteLine("Hello, 阅读全文
posted @ 2021-09-04 20:13 小林野夫 阅读(40) 评论(0) 推荐(0) 编辑
摘要:引用来源: https://www.cnblogs.com/flyingbread/archive/2007/01/18/620287.html https://www.cnblogs.com/1175429393wljblog/p/8399437.html https://docs.microso 阅读全文
posted @ 2021-09-04 20:01 小林野夫 阅读(456) 评论(0) 推荐(0) 编辑
摘要:文章来源:https://cloud.tencent.com/developer/article/1730918 \r\n与\n是有区别的。 如果要通用的则是\r\n,因为有些编辑器它不认\n “回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别: 在计算 阅读全文
posted @ 2021-09-04 19:44 小林野夫 阅读(597) 评论(0) 推荐(0) 编辑
摘要:每个操作系统对换坏的解释都不一样。所以写代码的时候要注意这个细节: 要基于.net跨环境的基类去写,才能跨平台。 Unix系统里,每行结尾只有“<换行>”,即“\n”; Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”; Mac系统里,每行结尾是“<回车>”,即\r。 首先设置 阅读全文
posted @ 2021-09-04 19:33 小林野夫 阅读(183) 评论(0) 推荐(0) 编辑
摘要:计算机中的数据以补码形式进行存储 ,计算的时候以补码的形式进行加法计算,加减乘除 最终在计算机都是以加法的形式进行。 由于补码的的形式让符号也参与了运算,-0 +0就统一由无符号0表示。所以-0的表示就让空出来了,这个空位又可以多表示一个负数。这就是为什么在无符号数字类型中,负数比正数看起来多一位。 阅读全文
posted @ 2021-09-04 14:39 小林野夫 阅读(84) 评论(0) 推荐(0) 编辑
摘要:问一个基本的问题。 负数在计算机中如何表示? 举例来说,+8在计算机中表示为二进制的1000,那么-8怎么表示呢? 很容易想到,可以将一个二进制位(bit)专门规定为符号位,它等于0时就表示正数,等于1时就表示负数。比如,在8位机中,规定每个字节的最高位为符号位。那么,+8就是00001000,而- 阅读全文
posted @ 2021-09-04 13:27 小林野夫 阅读(548) 评论(0) 推荐(0) 编辑
摘要:原文链接:https://www.cnblogs.com/huameitang/p/10528646.html 字符串是用于表示文本的字符的有序集合。 String对象是对象的有序集合 System.Char ,表示字符串; System.Char 对象对应于 utf-16 代码单元。 对象的值 S 阅读全文
posted @ 2021-09-04 11:53 小林野夫 阅读(558) 评论(0) 推荐(0) 编辑
摘要:C# 语言规范 未定义编码标准。 但是,Microsoft 根据本主题中的准则来开发样本和文档。 编码约定可实现以下目的: 它们为代码创建一致的外观,以确保读取器专注于内容而非布局。 它们使得读取器可以通过基于之前的经验进行的假设更快地理解代码。 它们便于复制、更改和维护代码。 它们展示 C# 最佳 阅读全文
posted @ 2021-09-04 00:46 小林野夫 阅读(87) 评论(0) 推荐(0) 编辑
摘要:文章原文:https://www.cnblogs.com/2Yous/p/4887904.html 从通常情况下来看,为了保持类型安全,默认情况C# 不支持指针算法。 不过,当你需要使用指针的时候,请通过使用 unsafe 关键字,可以定义可使用指针的不安全上下文。 有关指针的更多信息,请参见主题指 阅读全文
posted @ 2021-09-03 13:54 小林野夫 阅读(669) 评论(0) 推荐(1) 编辑
摘要:原生数据类型根据操作系统32位 64位的不同,用这个关键定义的数据大小也不一样。 比如 nint 在 Xamarin.iOS 中,是 native int(原生整数)的缩写。当设备是 Apple 发布的早期 32 位设备时,它等同于 Int32(32位整数),也即 C# 关键字 int。当设备是 6 阅读全文
posted @ 2021-09-03 13:28 小林野夫 阅读(624) 评论(0) 推荐(0) 编辑
摘要:c# @ 停止字符串中的转义字符,让字符串内的转义字符当正常字符输入。 因此,如果你需要类似“所见所得”效果的赋值,逐字字符串赋值方式会是你的首选!此外,需要注意的是,当使用符号 "@" 为字符串赋值时,被赋值的所有字符将不需要经过转义——只有双引号这个本身作为界限的字符需要经过转义,此时它的转义输 阅读全文
posted @ 2021-09-03 01:43 小林野夫 阅读(1451) 评论(0) 推荐(0) 编辑
摘要://范围运算符在string 和数组中的应用 static void Main(string[] args) { string examplestring = "123456789"; int[] exampleintarr ={ 1, 2,3, 4,5, 6, 7, 8,9 }; //范围的声明 阅读全文
posted @ 2021-09-02 18:19 小林野夫 阅读(245) 评论(0) 推荐(0) 编辑
摘要:bool 类型的运算符 & ^| && || ! 运算符&&和|| 是短路的,这意味着如果左侧表达式的值足以确定结果,则它们将不会评估其右侧表达式。 &和| 提供与&&和||相同的结果 操作员。不同之处在于,它们始终对表达式的两边都进行计算 我们来看一下面代码,就明白 &&和&在bool类型运算中的 阅读全文
posted @ 2021-09-02 13:13 小林野夫 阅读(441) 评论(0) 推荐(0) 编辑
摘要:元组Tuple 的简介 元组是具有特定数量和元素序列的数据结构。我们使用有序对 x, y 。 在无序对 { x, y } 中,顺序无关紧要:{ x, y } = { y, x }。 1、{ } 表示无序属性的集合,它对应哲学上的实体,数据库中行数据, 编程的上的对象。 用途:表示具体的对象。因此 n 阅读全文
posted @ 2021-09-01 01:21 小林野夫 阅读(5968) 评论(0) 推荐(2) 编辑

原文链接:https://www.cnblogs.com/cdaniu/