C#
Bridge_go
这个作者很懒,什么都没留下…
展开
-
C#委托触发
事件相当于是对委托的封装,用法是一样的。例如:有委托 Action act1.同步触发同步触发有两种:直接和方法一样调用:act(); 调用委托的Invoke方法:act.Invoke();PS:如果委托订阅了多个方法,是根据订阅的顺序依次触发。2.异步触发异步触发是调用委托的BeginInvoke方法:act.BeginInvoke(null, null);PS:如果委托订阅了多个方法时,这样执行会报错,异步执行的情况下只能订阅一个方法。若是想对订阅的方法都进行异步原创 2022-03-30 19:00:03 · 813 阅读 · 0 评论 -
C#新知识
1.资源文件有资源文件Resource.resx与Resource.zh-CN.resxProperties.Resource.Culture = new System.Globalization.CultureInfo("zh-CN");string s = Properties.Resource.Key1;若是以 zh-CN 初始化区域性,就会调用 Resource.zh-CN.resx 中的资源,若是不存在该名称的就调用默认资源Resource.resxPS:资源命名要以 {默认.原创 2022-03-28 14:16:31 · 270 阅读 · 0 评论 -
设计模式简单说明
一、六大原则1. 单一职责原则(Single Responsibility Principle)就一个类而言,应该仅有一个引起它变化的原因。2. 开放封闭原则(Open Close Principle)对于软件实体(类、模块、函数等待),扩展是开放的,修改是封闭的。3.依赖倒置原则(Dependence Inversion Principle)高层模块不应该依赖低层模块。两个都应该依赖抽象 抽象不应该依赖细节,细节应该依赖抽象 针对接口编程,不是对实现编程4. 里氏代换...原创 2021-11-04 14:52:06 · 89 阅读 · 0 评论 -
C#获取集合中的随机个数项
using System;using System.Collections.Generic;using System.Linq;static class ExtensionMethod{ public static IEnumerable<T> Random<T>(this IEnumerable<T> listT, int count) { return listT.OrderBy(l => Guid.NewGuid(.原创 2021-09-30 15:42:37 · 509 阅读 · 0 评论 -
C#Task的创建和Wait等待
假设有一个异步方法taskDo,返回一个Task类型。当我们用任务执行该异步方法,且需等待该方法执行完成时,应该如何创建任务呢???static void WriteLine(object line){ Console.WriteLine(DateTime.Now.ToString("mm:ss.ffff") + " " + line);}static async Task taskDo(){ WriteLine("Task Start"); await Task..原创 2021-09-28 15:45:52 · 7831 阅读 · 0 评论 -
C#Task参数(TaskCreationOptions)
位于 System.Threading.Tasks.TaskContinuationOptions Thread是基于操作系统级别的线程,而ThreadPool和Task不会创建自己的操作系统线程,二者是由任务调度器(TaskScheduler)执行,默认的调度程序仅仅在ThreadPool上运行。由于任务在ThreadPool上运行,因此创建配置不适合的Task可能会将系统默认的线程池给填满导致其他操作的线程阻塞。PreferFairness 提...原创 2021-09-28 14:14:57 · 2153 阅读 · 0 评论 -
C#方法同步
当我们多线程执行同一个方法时,如果没有公共使用数据时,没啥问题?但是需要访问同一个对象时,如果没有锁的话,会出现数据丢失的可能!例如下面的例子:没有锁时,集合长度可能不满足设定值 using System; using System.Collections.Generic; using System.Linq; using System.Runtime.CompilerServices; using System.Text; using System.Threading.Tasks;原创 2021-09-02 15:19:18 · 852 阅读 · 0 评论 -
C#csv文件保存(通用版)
using System;using System.Collections.Generic;using System.ComponentModel;using System.IO;using System.Reflection;using System.Text;using System.Linq;/// <summary>/// 指定是否保存到文件中/// </summary>[AttributeUsage(AttributeTargets.Property.原创 2021-08-06 16:57:10 · 2884 阅读 · 0 评论 -
C#生成可旋转的文字图片
using System.Drawing;using System.Drawing.Drawing2D;public Image CreateTextImage(string text, Font font, Color backgroundColor, Color foreColor, int margin = 5, RotateFlipType rotate = RotateFlipType.RotateNoneFlipNone){ SizeF sizeF = Graphic.原创 2021-06-24 15:19:32 · 226 阅读 · 0 评论 -
C#序列化有事件的对象
当使用BinaryFormatter进行序列化时实现深复制时,发现如果对象带有公共事件时,会引起报错。using System.IO;using System.Runtime.Serialization;using System.Runtime.Serialization.Formatters.Binary;/// <summary>/// 利用数据流实现深拷贝/// </summary>/// <typeparam name="T"></typ原创 2021-06-24 14:05:14 · 374 阅读 · 2 评论 -
C#BindingList
using System; using System.Collections.Generic; using System.ComponentModel; /// <summary> /// 提供支持数据绑定的泛型集合 /// </summary> /// <typeparam name="T"></typeparam> public class BindingCollection<T&g...原创 2021-06-18 10:14:23 · 900 阅读 · 0 评论 -
C#动态对象的创建
C#是静态语言,那C#能不能像python一样动态编程呢???1.DynamicObjectusing System;using System.Collections.Generic;using System.Dynamic;using System.Reflection;class Program{ static void Main(string[] args) { dynamic bDynamic = new BDynamicObject();.原创 2021-04-23 13:59:09 · 1937 阅读 · 1 评论 -
C#string.Format
占位符格式化 结果 描述 string.Format("{0,4}", 0) 0 不满足指定位数的情况下,在前置插入空格 string.Format("{0,-4}", 0) 0 不满足指定位数的情况下,在后置插入空格 数字格式化格式化 结果 格式符 描述 string.Format("{0:0.0}", 5) 5.0 string.Format("{0:0...原创 2021-04-15 16:34:55 · 1958 阅读 · 0 评论 -
Spire.Pdf中表格Grid的使用
using System;using System.Collections.Generic;using System.Diagnostics;using System.Drawing;using Spire.Pdf;using Spire.Pdf.AutomaticFields;using Spire.Pdf.Graphics;using Spire.Pdf.Grid;namespace PDFCreator{ class PDF { public st.原创 2020-12-16 11:20:08 · 1355 阅读 · 0 评论 -
C#针对PropertyGrid控件修改其常用的几个特性的值
using System;using System.ComponentModel;using System.Reflection;namespace PropertyGridUse{ public class PropertyAttribute<T> { /// <summary> /// 修改propertyName名称的属性Category特性的值 /// </summary> .原创 2020-12-03 14:43:05 · 1835 阅读 · 1 评论 -
C#winform界面的语言切换
1、效果图原创 2020-11-27 18:08:42 · 848 阅读 · 0 评论 -
C#类型总结
一、抽象(abstract)1.抽象类不能实例化只有类(class)才可以抽象,结构体(struct)不能class Program{ abstract class People { } static void Main(string[] args) { People people = new People(); //错误写法 }}报错提示:CS0144 无法创建抽象类或接口“Program.Peop...原创 2020-11-05 16:40:01 · 605 阅读 · 0 评论 -
C#对Windows服务的创建、安装和卸载
开发工具:VS2019目的:开启一个服务主动监听端口进行以太网通讯一.创建 Windows服务项目1.创建项目 创建成功后,如下图所示 将 Service1.cs 改名为BridgeService.cs 双击BridgeService.cs 后如下图所示2.添加安装程序在上图中按中鼠标右键,添加安装程序添加完成后,在项目中自动生成 ProjectInstaller.cs双击ProjectInstaller...原创 2020-09-24 14:11:59 · 732 阅读 · 0 评论 -
C#在低于6.0版本实现nameof
using System;using System.Collections.Generic;using System.Data;using System.Linq;using System.Linq.Expressions;namespace ConsoleApp7{ class Program { class People { public int ID { get; set; } public.原创 2020-07-17 15:13:54 · 768 阅读 · 0 评论 -
C#序列化和反序列化
一、XML的序列化(using System.Xml.Serialization)[XmlRootAttribute("City", Namespace = "China", IsNullable = false)] // 当该类为Xml根节点时,以此为根节点名称public class CityXml{ [XmlAttribute("CityId")] // 表现为Xml节点属性 public int ID { get; set; } [XmlAttribut...原创 2020-05-19 16:54:36 · 426 阅读 · 0 评论 -
C#实现公开枚举(GetEnumerator)
1.个人类Personpublic class Person{ public Person(string fName, string lName) { this.firstName = fName; this.lastName = lName; } public string firstName; public string lastName;}2.对Person的简单迭代public class Peo..原创 2020-05-11 23:12:16 · 1310 阅读 · 0 评论 -
C#配置文件读写(App.config)
using System.Collections.Generic; using System.Configuration; //有可能可以using但不能用,需重新添加引用 /// <summary> /// 针对配置文件的读写操作 (App.config) /// ps:key和name都不区分大小写 /// </summary> public class AppConfig { Configur...原创 2020-05-11 22:47:52 · 481 阅读 · 0 评论 -
NuGet包介绍
前言什么是NuGet?NuGet是.NET的软件包管理器。NuGet客户端工具提供了生成和使用软件包的功能。NuGet Gallery是所有软件包作者和使用者都使用的中央软件包存储库。包的安装和卸载 (以Newtonsoft.Json举例)1.控制台安装:Install-Package Newtonsoft.Json卸载:UnInstall-Pack...原创 2020-05-08 16:19:36 · 4394 阅读 · 0 评论 -
C#反射基本类型的TryParse的方法
几个基本类型都有TryParse方法,将object 自动识别类型和转换using System.Reflection;public static bool TryParse<T>(object val, out T t){ t = default(T); if (val == null) { return true;//返回类...原创 2020-04-27 15:50:56 · 674 阅读 · 5 评论 -
C#控制打印机打印窗体控件上信息
void PrintPanel(){ int paperWidth = 178; int paperHeight = 52; var printDocument = new System.Drawing.Printing.PrintDocument(); //指定打印机 //printDocument.PrinterSettings.PrinterNam...原创 2020-03-18 09:26:50 · 602 阅读 · 0 评论 -
C#浮点数的四舍五入
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;namespace ConsoleApp4{ class Program { static void Main(string[] ...原创 2020-03-17 17:51:40 · 952 阅读 · 0 评论 -
C#6.0和7.0的部分新特性介绍
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using System.Runtime.CompilerServices;using System.Diagnostics;u...原创 2020-03-03 10:57:48 · 259 阅读 · 0 评论 -
C#反射的基本应用
1.使用反射需引用 using System.Reflection;2.创建用于反射的对象class People{ string _name = "1"; //私有字段 public string Name = "2"; //公共字段 public int Age { get; set; } = 3; //公共属性 int _age {...原创 2020-01-09 10:51:06 · 316 阅读 · 0 评论 -
将json或者xml转换为对应的model
1.先将要转换的json或者xml复制到粘贴板2.在vs中选择下图所示操作,就可以转换为对应的类注意: 生成的代码可能至少需要 .NET Framework 4.5 或 .NET Core/Standard 2.0。...原创 2020-01-08 17:05:25 · 354 阅读 · 0 评论 -
C#对XML文件的序列化和反序列化
using System.Xml.Serialization;public class XMLOperate{ public static void SerialXml<T>(T t, string path) { using (FileStream finfo = new FileStream(path, FileMode.Cre...原创 2019-12-20 16:58:49 · 165 阅读 · 0 评论 -
C# 以枚举名为Section,枚举值为 Key 读取 ini 中的Value
/// <summary> /// 以枚举名称为Section,枚举值为Key的ini配置文件的读写 /// </summary> public class IniFileOperate : IniRW { protected Dictionary<object, string> _DefaultPar...原创 2019-11-08 17:03:34 · 316 阅读 · 0 评论 -
C# 对ini文件的序列化和反序列化
1.对ini文件进行序列化和反序列化 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; public class IniDeserialize<T> w...原创 2019-11-08 17:00:22 · 1198 阅读 · 2 评论 -
C# 字典的扩展方法
/// <summary> /// 根据条件删除字典中所有符合的键值对 /// </summary> /// <returns></returns> public static int RemoveAll<TKey, TValue>(this IDictio...原创 2019-11-08 16:48:23 · 525 阅读 · 0 评论 -
Visual Studio 中 C#快捷键
1.代码编辑CTRL+E,D 格式化所选文档全部代码 CTRL+E,C / CTRL+K,CTRL+C 注释选定内容 CTRL+E,U / CTRL+K,CTRL+U 取消选定注释内容 CTRL+SHIFT+V 剪贴板循环 CTRL+DELETE 删除至词尾 CTRL+BACKSPACE 删除至词头 CTRL+SHIF...原创 2019-10-23 09:03:26 · 292 阅读 · 0 评论 -
C# 对PDF文件的使用
百度网盘三方dllps:. net framework 4.0 client profile 下不行using Spire.Pdf;using Spire.Pdf.Graphics;using System.Diagnostics; PdfDocument doc = new PdfDocument(); doc.PageSettin...原创 2019-02-12 14:53:27 · 573 阅读 · 0 评论 -
C#中Form窗口中的控件不显示
问题:在vs2010中的窗体设计时,明明在designer.cs中有控件的代码,但是在窗体设计器中没有显示控件解决:看窗体构造函数中是否有InitializeComponent(); 有可能在designer.cs中没有将控件添加入父控件 例如:this.Controls.Add(this.groupBox1);ps:我之前遇到的就是这样,不知道怎么回事窗体中不显示控件了,后...原创 2019-03-05 13:42:56 · 10097 阅读 · 2 评论 -
C# 将一个文件夹中完整复制到另一个文件夹中,并可备份覆盖的文件
/// <summary> /// 将一个文件夹下的所有东西复制到另一个文件夹 (可备份文件夹) /// </summary> /// <param name="sourceDire">源文件夹全名</param> /// <param name="destDire...原创 2019-04-29 10:11:22 · 4966 阅读 · 0 评论 -
.NET Framework的完整源代码 下载网址
https://referencesource.microsoft.com/download.html原创 2019-05-08 14:23:37 · 2796 阅读 · 0 评论 -
C# 校验字符串是否为IP格式
string ip = “”;System.Net.IPAddress ipAddress;if (System.Net.IPAddress.TryParse(ip, out ipAddress)){ return true;}else{ return false;}原创 2019-06-14 15:38:04 · 1927 阅读 · 0 评论 -
C#从一个进程开启另一个进程,并传参数到进程中
1.开启进程using System.Diagnostics;ProcessStartInfo process = new ProcessStartInfo();process.FileName = "要开启的进程路径"; string arg1 = "进程参数1";string arg2 = "进程参数2";process.Arguments = string.Format...原创 2019-06-21 11:24:09 · 2371 阅读 · 0 评论