
C#基础
文章平均质量分 92
Archy_Wang
有些代码不应该被忘记,也没有源代码不应该被记住。
展开
-
C# 中记录(Record)详解
1、实现的IEquatable<T>接口的Equals方法和重写的GetHashCode方法中使用的属性不仅仅是构造参数对应的属性,还包含自定义的属性、继承的属性(包括public,internal,protected,private,但是需要有get获取器)、record class和readonly record struct生成的属性是get和init标识,也就是说它们的对象是只读的,而record struct生成的属性是get和set标识,也就是说它的对象是可读可写的。原创 2025-02-05 14:06:49 · 1286 阅读 · 0 评论 -
C# yield 关键字
这个状态机负责跟踪迭代器的当前执行位置、局部变量的值等信息,每次遇到 yield return 时,它会保存当前的状态,返回相应的值给调用者,等到下一次调用继续迭代时,又能恢复到之前保存的状态,接着往下执行,继续生成下一个值。从内存管理角度来看,由于数据是按需生成的,在某个时刻只有当前正在生成和返回的值会占用内存,而不是一次性将整个序列的数据都加载到内存中,这对于处理大量数据或者无限序列的情况非常有优势,大大节省了内存资源,同时也提升了程序的性能和响应速度。这样可以大大减少内存占用,并且提高程序的性能。原创 2025-02-05 10:54:52 · 979 阅读 · 0 评论 -
C#/.NET/.NET Core优秀项目和框架每周精选开篇
注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享。每周精选优秀的C#/.NET/.NET Core项目和框架,帮助开发者发现功能强大、性能优越、创新前沿、简单易用的项目和框架。无论你是寻找灵感、学习新技术、改进代码质量,还是想拓展自己的技术视野,每周精选都会为你提供有价值的参考和指导。关注每周精选能让你及时了解C#、.NET和.NET Core领域的最新动态和最佳实践,提高开发效率和质量。原创 2023-08-11 08:33:40 · 331 阅读 · 0 评论 -
C#实现利用熵值法确定权重
里使用百度上的一个例子来演示,这个例子在百度上是利用Excel做的,这里用C#实现。该例子的链接:百度实例链接代码如下:using System;using System.Collections;using System.Collections.Generic;using System.Data;using System.Linq;using System.Refl...原创 2019-10-24 13:36:47 · 1432 阅读 · 0 评论 -
C#中HttpWebRequest的用法详解
HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。请注意,HttpWebRequest对象不是利用new关键字通过构 造函数来创建的,而是利用工厂机制(factory mechanism)通过Create()方法来创建的。另外,你可...原创 2018-07-11 10:15:56 · 95448 阅读 · 5 评论 -
C#中NameValueCollection集合类用法详解
1.NameValueCollection类集合是基于 NameObjectCollectionBase 类。但与 NameObjectCollectionBase 不同,该类在一个键下存储多个字符串值(就是键相同,值就连接起来如下例子)。该类可用于标头、查询字符串和窗体数据。每个元素都是一个键/值对。NameValueCollection 的容量是 NameValueCollection 可以保...原创 2018-07-04 13:41:50 · 19547 阅读 · 1 评论 -
C#学习笔记——StreamWriter、StreamReader和FileStream区别
一、StreamReader类的介绍 构造函数: StreamReader sw = new StreamReader(Stream stream); StreamReader sw = new StreamReader(string path);为指定的流/文件名初始化 StreamReader 类的新实例,并且使用默认的编码(UTF-8)读取文件。默认的编码方式是UTF-8,En...原创 2018-07-04 14:41:17 · 4594 阅读 · 0 评论 -
C#中类成员的执行顺序
先进行细分:类的成员分为:字段、属性、方法、构造方法成员的修饰符:静态成员、实例成员层次结构:父类、子类 先不考虑继承关系,执行顺序为:静态字段静态构造方法实例字段实例构造方法属性和方法是在调用的时候才执行,这里就不考虑了。如何理解上面的执行过程?假如让我来设计执行过程,我该如何考虑,依据是什么?首先,静态的东西是大家共享的,也就是相同的。应该先关心共享的东西,再关系个人的东西。“先公后私”,呵呵...原创 2018-06-29 09:32:01 · 3178 阅读 · 0 评论 -
C#的扩展方法详解
扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的。 它们的第一个参数指定该方法作用于哪个类型,并且该参数以 this 修饰符为前缀。 扩展方法当然不能破坏面向对象封装的概念,所以只能是访问所扩展类的public成员。扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但可以像扩展类型上的实例方法一样进行调用...原创 2018-07-06 10:03:55 · 25531 阅读 · 1 评论 -
c#中class和struct区别
C#将数据分为两种:值数据类型和引用数据类型,这两种数据类型存储在内存中的不同的地方:值类型数据存储在栈中,而引用类型数据存储在内存的堆中。 预备知识1、内存简介 Windows使用一个系统:虚拟寻址系统。这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上。其实际结果就是32位的机子上每个进程都可以使用4GB的内存,当然,64位机这个数字就大了去了。这4GB的内存实际上包含了程序的所...原创 2018-07-06 12:00:19 · 462 阅读 · 0 评论 -
C# 深入理解按位异或运算符^
private void button1_Click(object sender, EventArgs e){Font oldFont = this.textBox1.Font;this.textBox1.Font = new Font(oldFont, oldFont.Style ^ FontStyle.Bold);}参与运算的两个值,如果两个相应bit位相同,则结果为0...原创 2018-10-26 14:06:05 · 7061 阅读 · 0 评论 -
微软资源库
网址是:https://msdn.itellyou.cn/原创 2018-11-27 08:43:27 · 885 阅读 · 0 评论 -
c#高效的线程安全队列ConcurrentQueue
入队(EnQueue) 、出队(TryDequeue) 、是否为空(IsEmpty)、获取队列内元素数量(Count)。一、ConcurrentQueue内部结构:1.实现原理众所周知,在普通的非线程安全队列有两种实现方式:1.使用数组实现的循环队列。2.使用链表实现的队列。先看看两种方式的优劣: .Net Farmework中的普通队列Queue的实现使用...原创 2019-05-07 10:49:31 · 5957 阅读 · 0 评论 -
C# 中@字符的作用
以前只知道@在C#中为了写文件路径的\不要加转义符而在前面加上@标识符,没想到@还有其他的作用1.忽略转义字符例如 1 stringfileName ="D:\\文本文件\\text.txt"; 使用@后 1 stringfileName =@"D:\文本文件\text.txt"; 2.让字...原创 2019-05-15 15:00:51 · 2067 阅读 · 1 评论 -
Dictionary的TryGetValue方法
这个方法时常会用到,而且很有效。TryGetValue:获取与指定的键相关联的值比如我们读取一个xml文件,让后将其写入到Dictionary中存储:[csharp] view plain copyprivate static Dictionary<string, string> SqlKeyValues = null; /// <summary> ...原创 2018-04-23 10:28:59 · 11322 阅读 · 0 评论 -
C#直接使用DllImport外部Dll的方法
C#.Net调用基本格式:[DLLImport(“DLL文件路径”)]修饰符 extern 返回值类型 方法名称(参数列表) 如:[csharp] view plain copy[DllImport("kernel32.dll", SetLastError = true, EntryPoint = "SetLocalTime")] public static extern int SetSyst...原创 2018-04-06 15:03:22 · 784 阅读 · 0 评论 -
C#的DataTable详解
在项目中经常用到DataTable,如果DataTable使用得当,不仅能使程序简洁实用,而且能够提高性能,达到事半功倍的效果,现对DataTable的使用技巧进行一下总结。 一、DataTable简介 (1)构造函数 DataTable() 不带参数初始化DataTable类的新实例。 DataTable(str...转载 2017-02-23 16:24:08 · 1199 阅读 · 0 评论 -
C#里面的三种定时计时器:TIMER
在.NET中有三种计时器:1、System.Windows.Forms命名空间下的Timer控件,它直接继承自Componet。Timer控件只有绑定了Tick事件和设置Enabled=True后才会自动计时,停止计时可以用Stop()方法控制,通过Stop()停止之后,如果想重新计时,可以用Start()方法来启动计时器。Timer控件和它所在的Form属于同一个线程;2、System.Time...原创 2018-03-14 10:51:52 · 25298 阅读 · 1 评论 -
C#汉字转拼音源码
using System;using System.Collections.Generic;using System.Text;using System.Text.RegularExpressions;namespace Ctr.Common.Tools{ /// <summary> /// 汉字转拼音静态类,包括功能全拼和缩写,方法全部是静态的 //...原创 2017-08-29 14:13:43 · 760 阅读 · 0 评论 -
C#由汉字获取拼音或者首字母的帮助类
我们在做系统是经常遇到需要通过汉字提取汉字拼音 的情况 ,我在网上搜集了几种获取方案包含了收首字母和完整拼音的获取,供大家参考!方案一:这个本人测试通过,最简单[csharp] view plain copy/// <summary> /// 获取拼音 /// </summary> /// <param name="str"></...原创 2017-08-29 14:05:03 · 5497 阅读 · 1 评论 -
C#中抽象类和接口的区别
两者的区别总结成一句话:抽象类规定你是什么,接口规定你能干什么1.面向接口编程和面向对象编程是什么关系首先,面向接口编程和面向对象编程并不是平级的,它并不是比面向对象编程更先进的一种独立的编程思想,而是附属于面向对象思想体系,属于其一部分。或者说,它是面向对象编程体系中的思想精髓之一。2.接口的本质接口,在表面上是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或...原创 2017-04-07 10:56:34 · 1544 阅读 · 0 评论 -
C#中(int),int.parse,int.tryparse,convert.toInt32的区别
1 (int)变量名[强制类型转换]: 该转换方式主要用于数字类型转换,从int类型到long,float,double,decimal类型,可以使用隐式转换,但是从long类型到int类型就需要使用显式转换,也就是该数据类型转换方式,否则会产生编译错误。 该方式对于浮点数会做无条件舍去,失去精确度 当然,该方式也可以进行object到int得转换,但是,object的...原创 2017-05-04 10:48:56 · 379 阅读 · 0 评论 -
C#汉字转化成拼音的算法
public static string ChineseToFullPinYin(string chinese) { // 匹配中文字符 Regex regex = new Regex("^[\u4e00-\u9fa5]$"); byte[] array = new byte[2]; string pyString = ""; int chrAsc = 0...原创 2017-03-07 16:01:28 · 553 阅读 · 0 评论 -
C# String.Format 各种字符串格式
C#的String.Format举例 stringstr1 =string.Format("{0:N1}",56789); //result: 56,789.0 stringstr2 =string.Format("{0:N2}",56789); //result: 56,789.00 stringstr3 =string.Form...原创 2017-03-17 09:41:10 · 6862 阅读 · 0 评论 -
C#中的Dictionary字典类介绍
说明 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是唯一的,而值不需要唯一的 键和值都可以是任何类型(比如:string, int, 自定义类型,等等) 通过一个键读取一个值的时间是接近O(1) 键值对之间的偏序可以不定义使用方法: //定义...原创 2017-02-18 09:09:39 · 467 阅读 · 0 评论 -
C#敏感词过滤算法实现
1.DFA算法简介DFA全称为:Deterministic Finite Automaton,即确定有穷自动机。其特征为:有一个有限状态集合和一些从一个状态通向另一个状态的边,每条边上标记有一个符号,其中一个状态是初态,某些状态是终态。但不同于不确定的有限自动机,DFA中不会有从同一状态出发的两条边标志有相同的符号。 简单点说就是,它是是通过event和当前的state得到下一个state,即ev...原创 2017-06-01 16:21:25 · 13022 阅读 · 5 评论 -
C# Dictionary 字典
说明 必须包含名空间System.Collection.Generic Dictionary里面的每一个元素都是一个键值对(由二个元素组成:键和值) 键必须是唯一的,而值不需要唯一的 键和值都可以是任何类型(比如:string, int, 自定义类型,等等) 通过一个键读取一个值的时间是接近O(1) 键值对之间的偏序可以不定义使用方法: //定义...原创 2018-03-28 09:22:18 · 17256 阅读 · 1 评论 -
C#的IEnumerable和IEnumerator 详解
我们先看IEnumerable和IEnumerator两个接口的语法定义。其实IEnumerable接口非常简单,只包含一个抽象的方法GetEnumerator(),它返回一个可用于循环访问集合的IEnumerator对象。那IEnumerator对象有什么呢?其实,它是一个真正的集合访问器,没有它,就不能使用foreach语句遍历数组或集合,因为只有IEnumerator对象才能访问集合中的项,...原创 2018-04-04 10:09:16 · 4378 阅读 · 0 评论 -
C#的反射详解
反射的定义:审查元数据并收集关於它的类型信息的能力,元数据(编辑后的基本数据单元)就是一大堆表,编译器会创建一个类定义表,一个字段定义表,一个方法定义表等,System.Reflection命名空间包含的几个类,允许你反射(解析)这些元数据的代码一、反射的作用:动态的创建类型的实例,将类型邦定到现有对象,或从现有对象中获取类型 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某...原创 2018-04-04 10:31:20 · 306 阅读 · 0 评论 -
C#中数组、ArrayList和List三者的区别
在C#中数组,ArrayList,List都能够存储一组对象,那么这三者到底有什么样的区别呢。数组 数组在C#中最早出现的。在内存中是连续存储的,所以它的索引速度非常快,而且赋值与修改元素也很简单。[csharp] view plain copy <span style="font-family:SimSun;font-size:18px;">//数组 string[] s=n...原创 2017-02-02 09:06:16 · 464 阅读 · 0 评论 -
C#的队列(Queue)和堆栈(Stack)的用法
C# 队列(Queue)队列(Queue)代表了一个先进先出的对象集合。当您需要对各项进行先进先出的访问时,则使用队列。当您在列表中添加一项,称为入队,当您从列表中移除一项时,称为出队。Queue 类的方法和属性下表列出了 Queue 类的一些常用的 属性:属性描述Count获取 Queue 中包含的元素个数。下表列出了 Queue 类的一些常用的 方法:序号方法名 & 描述1public...原创 2018-04-09 11:58:13 · 932 阅读 · 0 评论