C#
望天hous
虚心学习
展开
-
C# 中Linq探讨 Or条件拼接
然而,如果你需要根据不同的条件动态地构建查询(例如,用户可能只输入了名字,或者只输入了年龄范围,或者两者都输入了),那么 PredicateBuilder 就变得非常有用。PredicateBuilder 的主要用途是构建复杂的逻辑表达式,特别是当你需要动态地添加条件时(例如,在运行时根据用户的输入构建查询)。虽然没有一个特定的NuGet包专门用于拼接LINQ的OR条件,但你可以使用PredicateBuilder这样的模式或直接在查询中编写条件来达成目的。方法一:使用PredicateBuilder。原创 2024-08-20 17:05:19 · 422 阅读 · 0 评论 -
C# 中用 TopShelf服务创建和延迟运行
以下是一个简单的示例,展示了如何使用 TopShelf 创建一个服务,并在服务启动后延迟执行某些操作。你可以通过 Topshelf 提供的命令行工具来安装、卸载和启动服务。你可以通过这种方式来配置 Topshelf 服务,使其符合你的需求。这样一来,当系统启动后,服务会在一段时间后自动启动,而不是立即启动。在这个例子中,我创建了一个简单的定时器来模拟服务的持续运行。此外,根据你的具体需求,你可能需要调整服务的逻辑和配置。如果你想使用 Topshelf 来配置一个延迟自动启动类型的服务,可以通过设置。原创 2024-07-19 09:10:26 · 391 阅读 · 0 评论 -
C#中类型装换
在上述示例中,我们通过反射获取了MyClass类中的MyProperty属性的信息,然后使用Convert.ChangeType()方法将字符串类型的值"10"转换为属性的类型(int),最后使用反射设置属性的值为转换后的值10。在C#中,可以使用Convert.ChangeType()方法进行类型转换。这个方法可以将一个对象转换为指定的类型。原创 2024-01-27 15:24:51 · 313 阅读 · 0 评论 -
C# 中 async/await 遇上 forEach 两种写法,是否按照遍历?
在 C# 中,async/await 与 forEach 可以搭配使用,但需要注意的是,forEach 本身不是一个异步操作,它会按顺序同步地遍历集合中的元素,并将每个元素作为参数传递给回调函数。运行以上代码,你会发现 forEach 循环会立即输出 “forEach 循环完成”,而后再一次性输出所有数字,因为 async/await 在 forEach 循环中并不起作用。需要注意的是,对于 forEach 循环中的异步操作,你无法保证它们会以预期的顺序执行,因为它们是并行执行的。原创 2023-12-29 09:06:46 · 1236 阅读 · 0 评论 -
netcore中只能启动一个程序
在启动程序时候,有时候在启动一个后不能再次启动,需要我们做一些判断。原创 2023-06-09 17:32:29 · 196 阅读 · 0 评论 -
C# Task拓展方法
TASK,英语单词,名词、动词,作名词的意思是“(困难的)任务,工作;(语言教学中的)活动”,作动词的意思是“派给某人(任务);对(手段或能力)要求极高”如果单独想执行一个任务,忽略错误,此方法比较适合使用。...原创 2022-07-05 11:12:00 · 285 阅读 · 0 评论 -
C#中 简单链表实现
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。 相比于线性表顺序结构,操作复杂。由于不必须按顺序存储,链表在插入的时候可以达到O(1)的复杂度,比另一种线性表顺序表快得多,但是查找一个节点或者访问特定编号的节点则需要O(n)的时间,而线性表和顺序表相应的时间复杂度分别是O(logn)和O(1)原创 2022-07-04 09:39:15 · 2026 阅读 · 0 评论 -
.net中 接口可以有默认实现了
从 .NET Core 3.0 上的 C# 8.0 开始,可以在声明接口成员时定义实现。 最常见的方案是安全地将成员添加到已经由无数客户端发布并使用的接口。示例:C# 中比较常见的两个接口。 然后新特性来了。...原创 2022-07-03 17:37:42 · 342 阅读 · 0 评论 -
C# 中只运行一次帮助类
帮助类原创 2022-06-20 10:08:42 · 148 阅读 · 0 评论 -
C# netcore中 配置帮助类IConfiguration
IConfiguration 帮助类原创 2022-06-20 08:40:42 · 995 阅读 · 0 评论 -
C#中 ReadOnlySequence<T> 用法, 缓冲区
有助于读取跨多个缓冲区运行的数据的类型。 它们主要用于支持 PipeReader 对象。ReadOnlySequenceReadOnlySequence 是一个可以表示 T 的连续或非连续序列的结构。 它通过以下方法进行构造:一个 T[]一个 ReadOnlyMemory一对链接列表节点 ReadOnlySequenceSegment 和索引,用于表示序列的开始位置和结束位置。第三种表示形式最值得关注,因为它对 ReadOnlySequence 上的各种操作有性能影响:是一个不透明的值,该值将索引原创 2022-06-16 15:23:05 · 1418 阅读 · 0 评论 -
C# 中IO操作通用类
IO原创 2022-06-16 13:05:44 · 318 阅读 · 0 评论 -
C#通过字节读取数据
C# 通用方法,读取或者写入大端小端数据方法原创 2022-06-14 14:09:58 · 609 阅读 · 0 评论 -
C# EFCore 比较两个对象
EFcore 比较复杂对象原创 2022-06-14 09:49:45 · 255 阅读 · 0 评论 -
C# 伪随机数生成
C# 随机数帮助类用到拆箱装箱,有没有更好的办法,欢迎在底部留言。。 class RandomHelper { public static T GetRandom<T>() { try { Random random = new Random(GetSeed()); Type curType = typeof(T);原创 2022-04-07 17:22:00 · 816 阅读 · 0 评论 -
vs编辑器功能之生成事件
在C#编译中,使用反射时候,不能自动复制类库,所以就需要 属性–>生成事件–>生成后事件命令(0)添加下面两句copy "$(TargetDir)*.dll" "$(SolutionDir)ConsoleClient\bin\Debug" copy "$(TargetDir)*.dll" "$(SolutionDir)ConsoleClient\bin\Release"其中 ConsoleClient\bin\Debug 就是你程序要用的目录...原创 2022-01-28 10:25:06 · 551 阅读 · 0 评论 -
C#操作字节上位方法
/// <summary> /// 操作一个字节各个位方法 /// </summary> /// <param name="word">要操作的字节</param> /// <param name="value">要设置值</param> /// <param name="offset">开始偏移的位数</param> ...原创 2022-01-25 14:26:47 · 309 阅读 · 0 评论 -
C#中索引器的实现
今天突然被人问到,C#中什么是索引器?脑子一片空白, 那个啥就是一个方括号。 懵逼的回答。先百科一下,得到如下结果:C# 索引器(Indexer)索引器(Indexer) 允许一个对象可以像数组一样使用下标的方式来访问。当您为类定义一个索引器时,该类的行为就会像一个 虚拟数组(virtual array) 一样。您可以使用数组访问运算符 [ ] 来访问该类的的成员。然后自己定义一个泛型索引器的类:using System;using System.Collections.Generic;u原创 2022-01-24 20:57:38 · 1059 阅读 · 0 评论 -
C# 使用 thrift-0.15.0 实现RPC协议
到了网络时代,大家的电脑都连起来了。以前程序只能调用自己电脑上的进程,能不能调用其他机器上的进程呢?于是就程序员就把IPC扩展到网络上,这就是RPC(远程过程调用)了。现在不仅单机上的进程可以相互通信,多机器中的进程也可以相互通信了.所用到的演示软件和文本:https://download.csdn.net/download/weixin_43542114/43118953打开 gen-netstd 文件中生成的C# 类 然后创建 中间通信类创建服务端核心代码:using System;us原创 2021-11-16 21:04:49 · 1040 阅读 · 2 评论 -
C# 通过snmp获取内存占用大小(物理内存)
SNMP 可以使网络管理员通过一台工作站完成对计算机、路由器和其他网络设备的远程管理和监视。利用 SNMP 协议可以更好地管理和监控网络。管理工作站可以远程管理所有支持该协议的网络设备,如监视网络状态、修改网络设备配置、接收网络事件警告等。要使用snmp需要开始本地snmp服务,和配置团体名称。使用微软提供的snmp类库:SnmpSharpNet。win10 开启snmp方法:https://wwr.lanzoui.com/iFzRht4xzkb密码:euzt底部附送C# 动态库方法: ///原创 2021-08-25 11:18:02 · 1218 阅读 · 0 评论 -
C# 的claimsIdentity 类中的类图
原创 2021-08-23 14:44:42 · 432 阅读 · 0 评论 -
C# 的 System.IO.Pipelines:.NET 中的高性能 IO
System.IO.Pipelines是一个新的库,旨在使在 .NET 中执行高性能 IO 变得更加容易。它是一个面向 .NET Standard 的库,适用于所有 .NET 实现。Pipelines 诞生于 .NET Core 团队为使 Kestrel 成为业内最快的 Web 服务器之一所做的工作。最初作为 Kestrel 内部的一个实现细节发展成为一个可重用的 API,在 2.1 中作为第一类 BCL API (System.IO.Pipelines) 提供给所有 .NET 开发人员。它解决什么问题原创 2021-08-17 17:02:51 · 2413 阅读 · 0 评论 -
C#中的集合知识总结
C# 中的集合总结:一:按照命名空间进行分类:1: 经常在用就是C#中的普通数据集合。描述:集合使用的接口和基类2:泛型集合,者在2.0 就已经引入了,这个比较好用,但是多线程操作同一个集合就会出现问题。3: 多线程安全泛型集合。顾名思义4: 描述:专为原始集合的内容永远不会更改的场景设计,尽管他们可以将修改后的集合创建为新实例。 貌似具有不可能改特性。目前自己没有碰到这种使用情况。二: 各个接口之间的类图关系C# 中的集合都实现[Icollection] 和[IEnumberable] 这原创 2021-07-28 17:35:52 · 188 阅读 · 0 评论 -
C# 把一个缓冲区的特定位数 转化成数字
前两天碰到一个需求就是把一个byte数组中的特定几位转化成数字。经过简单分析可得,自己封装了一个简单方法。思路分析过程:日志接口的十六进制数据: 30 10 00 00 B6 28 A7 60 8F 84 01 40 41 02 03 67 66要求如何取得 bit 位是 11-18 标识数据, 最好能写一个通用算法:分析过程: 一般收到数据的 byte[] 数字,最小存储单元就是, 字节, 换算规律 1字节=8 bit所以要想获取字节上的位数据 需要用到 & | 位运算符。提取可原创 2021-07-24 14:39:07 · 197 阅读 · 0 评论 -
C# 中计算阶乘的函数方法 备忘
private static double BingCal(int nu) { double result = 1; if (nu <= 1) { return result; } result = result * nu; return result * BingCal(nu - 1); ...原创 2021-06-18 17:37:44 · 575 阅读 · 0 评论 -
C#中 checked 检查数字是否溢出问题 备忘
private static void OverFlowExceptionTest() { //look this two Code Where is different #region MyRegion Console.WriteLine("no check overflow"); int val1 = int.MaxValue - 1; Console.Write.原创 2021-06-17 17:04:13 · 221 阅读 · 1 评论 -
C# foreach 的实现 和探索
除了foreach 另外一种方式遍历 private static void TestForeach1() { List<int> ls = new List<int>(); for (int i = 0; i < 10; i++) { ls.Add(i); } //进行遍历 Cons原创 2021-06-16 16:33:15 · 120 阅读 · 0 评论 -
C# 中的switch case 模式匹配 写法 备忘
private static void TestSwitch() { string path = "a.txt"; lab1: Console.WriteLine("Input Key R Read Or W Write:"); ConsoleKeyInfo inputKey = Console.ReadKey(); Console.WriteLine(); .原创 2021-06-16 11:29:42 · 908 阅读 · 0 评论 -
C# 通用类 备忘,用于重写操作符的示例
/* ============================================================================== * 功能描述:Property * 创 建 者:Dell * 创建日期:2021/6/15 15:06:27 * ==============================================================================*/using System;using System.Co原创 2021-06-15 16:44:58 · 404 阅读 · 0 评论 -
C# 实现注册定时器管理 备忘
public class TimerTaskManger { private readonly Dictionary<string, TimerTask> AllTimerMangerDic = new Dictionary<string, TimerTask>(); public bool RegistTimer(string name, Action<object> action, int interval) .原创 2021-05-26 10:13:14 · 134 阅读 · 0 评论 -
C# 的EF 操作Mysql模式 Core first模式
操作步骤:先安装mysql的net连接驱动库,否则可能会报错,找不到本地驱动提供者. 版本信息【mysql-connector-net-8.0.25.msi】链接: https://pan.baidu.com/s/18m6o3MZrl5R4_XXyWKnMhw 提取码: 18sp 复制这段内容后打开百度网盘手机App,操作更方便哦也可以自己去官网下载。因为使用的是core first 所以不再下载mysql的vs可视化图形工具。安装对应的其他依赖的 mysql.data 和对应原创 2021-05-14 11:46:52 · 383 阅读 · 0 评论 -
C#的EF6操作sqlite 数据库
配置<?xml version="1.0" encoding="utf-8"?> <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6" /></providers>原创 2021-05-11 13:38:46 · 2237 阅读 · 0 评论 -
C#对serialport 类的封装
实现是来并不难,主要是面向接口编程思想:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ClassLibrary1{ //串口接口定义 public interface IComserial { int ReadBuf(byte[] buf, int offs原创 2021-04-19 13:09:45 · 529 阅读 · 1 评论 -
C# 中的设计模式练习,文件分割器。通用库设计
使用的是设计模式有:行为型:观察者,状态。 暂且这么多后期有进行了通用分割方便的重构。using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Text;namespace FileSplitter{ public class Splitter { public SplitterState CurSplitState { get原创 2021-04-08 14:53:45 · 140 阅读 · 0 评论 -
C#代码类CRC效验,查表法
直接把完成要校验的的byte[] 数组传入 ,如果方法crc16 返回不为零 即数据无效:using System;using System.Collections.Generic;using System.Text;namespace Common{ public static class ModbusCRC { static ModbusCRC() { InitCRCStorage(); }原创 2020-07-01 18:30:21 · 2525 阅读 · 2 评论 -
C# 使用Xunit 框架进行代码测试
如何引用xunit 管理包,和新建测试类这里就不在一一进行详说,可以自行搜索。为啥要进行代码测试,这样能有效减少我们代码种的bug.好处多多,这里也不在进行赘述。主要测试代码:using DemoXUnitText;using System;using Xunit;/* 当一个测试方法需要多组测试参数时候,Fact 标识属性已经不能满足我们的需求,我们需要另外一种方式,InlineData,Theory 属性标识 请看方式1 1方法虽然能够实现批量数据的测试,但是参数还是只能原创 2021-03-29 22:23:34 · 1500 阅读 · 0 评论 -
C#中的行为设置模式之 解释器模式(interpreter)
动机:在软件构建过程中,如果某一特定领域的问题比较复杂,类似的模式不断重复出现,如果使用普通的编程方式来实现将面临非常频繁的变化。定义:定义一个语言,定义他的文法的一种表示,并定义一种解释器,这个解释器使用该表示解释语言中的句子。代码示例:计算机的实现 同一个命名空间下 (应该分开,两个示例代码)using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;usi原创 2021-03-11 15:43:20 · 464 阅读 · 0 评论 -
根据Unicode编码用C#语言把它转换成汉字相互转化
private void button1_Click(object sender, EventArgs e) { #region Unicode 编码 string str = "解决方案资源管理器"; byte[] bts = Encoding.Unicode.GetBytes(str); StringBuilder sb = new StringBuilder();原创 2021-02-24 12:46:21 · 727 阅读 · 0 评论 -
C#调用系统函数的帮助类 简化自己挨个上网搜查
public class HelpWin32 { [DllImport("User32.dll", CharSet = CharSet.Auto)] public static extern IntPtr GetWindowDC(IntPtr handle); [DllImport("user32")] public static extern bool AnimateWindow(IntPtr whnd, int dwtime, i原创 2021-02-18 14:51:11 · 413 阅读 · 0 评论 -
C# 调用系统C++接口代码 实现文件分组的读取 (暂不支持注销功能)
public class IniFileHelper { [DllImport("kernel32")] private static extern int GetPrivateProfileString(string sectionName, string key, string defaultValue, byte[] returnBuffer, int size, string filePath); [Dll.原创 2021-02-18 14:44:03 · 108 阅读 · 0 评论