C#
文章平均质量分 79
Bird鸟人
这个作者很懒,什么都没留下…
展开
-
C#匿名函数内存泄漏
public static CheckBox CreateSettingCheckBox(String content, Thickness thickness, String ConfigureKey) { CheckBox checkBox = new CheckBox() { Content =...原创 2018-03-27 11:02:00 · 1276 阅读 · 0 评论 -
.NET MEF托管可扩展框架
MEF简介:今天学习了下MEF框架,MEF,全称Managed Extensibility Framework(托管可扩展框架)。MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库。 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置。 扩展开...原创 2017-10-18 19:02:43 · 1056 阅读 · 0 评论 -
使用反编译工具dnspy动态修改代码
目前dnspy的最新版是6.0今天使用的是4.5.3来演示,因为6.0需要安装.NET4.7.2,但是电脑内存快不足了,推荐大家使用最新版6.01.打开dnspybin目录下有dnspy.exe和dnspy_x86.exe,若是32位程序则选择_x86.exe2.点击文件-->打开,选择要调试的dll3.点击调试-->启动调试,选择要调试的应用程序,一般为.exe;...原创 2019-02-14 09:32:09 · 42632 阅读 · 2 评论 -
C# 代码大小写规范
PasalCasing:标识符的第一个单词的字母大写;camelCasing:标识符的第一个单词的字母小写。下表描述了不同类型标识符的大小写规则: 标识符 大小写 示例 命名空间 Pascal namespace Com.Techstar.ProductionCenter 类型 Pascal public clas...原创 2020-08-25 10:42:10 · 5932 阅读 · 0 评论 -
C#反射报错:无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性
今天用反射报错:无法加载一个或多个请求的类型。有关更多信息,请检索 LoaderExceptions 属性报错代码如下:var Assembly.LoadFile(dllPath);var types =asm.GetTypes(); //这句报错了然后点击进去看Exception的详细信息:里面有一个属性是LoaderException, 点进去看到的是:”未...原创 2020-02-19 22:54:48 · 8726 阅读 · 0 评论 -
C#项目 生成操作中 嵌入的资源 如何读取
一.如何为C#项目添加资源选择项目,右键添加,新建项,选择资源文件然后双击Resoruce1.resx, 选择添加资源->添加现有文件选择要加入的文件,加入后,会在项目中出现一个Resources的文件夹,如下图可以看到出现了一个preview.jpg,这就是刚刚添加进来的图片,选择图片,右键->属性->生成操作->改为嵌入的资源...原创 2020-02-12 23:10:59 · 3073 阅读 · 0 评论 -
C# 报错 "xxx"的类型初始值设定项引发异常 (System.TypeInitializationException)
当报错 “xxx”的类型初始值设定项引发异常大多是因为:1.类的静态构造函数中异常了2.类的静态成员变量赋值异常了,如成员变量 赋值直接超出内存限制3.类的静态成员变量=函数(), 该函数报错了总结下就是:"xxx"这个类并没有被初始化成功public ClassHelpers{ public static string Name { get; } =...原创 2020-02-12 22:13:53 · 18972 阅读 · 0 评论 -
C# 实现RSA AES加密解密
RAS:C#System.Security.Cryptography 提供了base64和xmlstring两种方式,我更喜欢base64的RSA是非对称加密,经典的对称加密就是DES,AES等,不过这两种算法的缺点是加解密双方都必须知道密钥,安全性不高RSA则可以解决这个问题,生成公钥和私钥,公钥可以公开给其他人,私钥自己保管,别人用公钥加密后,自己用私钥解密。...原创 2019-11-07 17:32:42 · 1873 阅读 · 0 评论 -
C# 显式声明析构函数(~ClassName)崩溃问题
我在点击button的click按钮后,过了大约10秒,程序崩溃了代码如下:namespace disposeTest{ public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); ...原创 2019-06-19 11:29:34 · 710 阅读 · 0 评论 -
C# 操作Sqlite本地数据库增删查改实例
首先:需要引入System.Data.Sqlite.dll 和System.Data.Sqlite.Linq.dll 这两个代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using S...原创 2019-05-31 20:21:20 · 2212 阅读 · 0 评论 -
C# 根据汉字获取首字母拼音或全拼
第一种方法.简单快速若是求快,可以用下面这个方法,不需要什么库,直接写就完事调用GetPYstring ,传入"世界和平",返回“SJHP”public static class Helpers{ public static String GetPYstring(string str) { string temStr = ""...原创 2019-05-31 20:02:58 · 6378 阅读 · 1 评论 -
C# Member XXX cannot be accessed with an instance with an instance reference;qualify it with a type
C#报错:Member XXX cannot be accessed with an instance with an instance reference;qualify it with a type name instead无法使用具有实例引用的实例访问成员xxx;请改用类型名对其进行限定解决:该方法是静态static的,所以要使用Class.Func的调用方式,而不是实例化...原创 2019-05-23 19:24:19 · 5832 阅读 · 0 评论 -
C# 操作XML文件 XmlDocument和XElement
首先在根目录下新建一个config.xml:<?xml version="1.0" encoding="utf-8"?><Config> <Debug> <Lan> <Server Ip="142.12.10.123" Port="9601"/> </Lan&g...原创 2019-05-19 18:41:15 · 3829 阅读 · 0 评论 -
VS报错 XXX.dll Cannot find or open the PDF file 原因
VS在F5运行一个启动项目时报错,,一堆的dll cannot find\msorlib.dll Cannot find or open the PDF file\PresentationFramework.dll Cannot find or open the PDF file。。。原因是:项目中的各个工程生成的dll都被复制到另一个目录output/bin下:...原创 2019-05-27 13:50:17 · 1567 阅读 · 0 评论 -
C# 给Button的Click传入自定义参数
如何给Click事件传递自定义的参数有一种方法是在Button的Tag属性设置为你要传入的参数,一般不建议这么做,当然也不失为一种简单粗暴的好办法为什么写这个是因为: 一开始我就是用具名函数的形式绑定Click事件的原因是慎用匿名函数匿名函数会产生很多内存泄漏的问题,因为你不小心就会捕获了各种变量甚至是一些全局静态变量但是如果想传入自定义参数的话,那么第二种方式是不...原创 2019-06-03 15:56:43 · 14061 阅读 · 1 评论 -
C# Lamada表达式详解
Lambda—— 表达式Lambda表达式是一个匿名函数,用它可以高效简化代码,常用作委托,回调Lambda表达式都使用运算符=>,所以当你见到这个符号,基本上就是一个Lambda表达式Lambda运算符的左边是输入参数(),=>,右边是表达式或语句块Lambda表达式,是可以访问到外部变量的可以将此表达式分配给委托类型仔细分析ladama...原创 2019-09-28 21:50:33 · 1382 阅读 · 0 评论 -
C# 根据多个字符 分割字符串(split)
例子一:USA||8888|ABC ,按照||分割我预期的结果是:USA8888|ABC也就是说,我只想根据 || 来分割,不是|| 都不要分割那么可以使用下面两种方式:string str="USA||8888|ABC"var array=Regex.Split(str , @"\|\|" , RegexOptions.None);或者:var...原创 2019-09-19 15:57:08 · 10835 阅读 · 0 评论 -
C# 操作Mysql数据库 例子
1.using MySql.Data.MySqlClient;2.编写如下代码,基本上代码套路和SqlServer是类似的,把前面的My去掉,感觉就是SqlServer的代码了代码如下:using MySql.Data.MySqlClient;using System;using System.Data;namespace ToolsTest{ clas...原创 2019-08-07 15:41:39 · 403 阅读 · 0 评论 -
C# 关键字default(默认值表达式)用法简介
第一种,用于switch语句中switch (num){ case 1: Console.WriteLine("1"); break; case 2: Console.WriteLine("2"); break; default: Console.WriteLine("no match"...原创 2019-07-21 10:37:14 · 15291 阅读 · 2 评论 -
各个 C# 版本的发布日期和发布方式(C# 1.0 - 至今)
C# 8.0尚在预览版本C# 7.32018 年 5 月 随 Visual Studio 2017 v15.7 发布C# 7.22017 年 11 月 随 Visual Studio 2017 v15.5 发布C# 7.12017 年 8 月 随 Visual Studio 2017 v15.3 发布C# 7.02017 年 3 月 随 Visual Studi...转载 2019-07-21 10:12:37 · 2236 阅读 · 1 评论 -
.NetCore使用SQLite报错 :Sqlite Error 1: no such table 'codeinfo'
背景:.NetCore Web项目需要使用sqlite,在本地使用没有问题,但是挂在服务端的docker上就报了这个错误appsettings.json中的路径是:"ConnectionStrings": { "sqliteConnection": "Data Source=demodb.sqlite"}就是当前目录,于是在docker上...原创 2019-07-19 16:28:08 · 4011 阅读 · 1 评论 -
C# 关键字 使用where来限定泛型约束
用法如下:public interface IEntity{}public class FutureResult<T> where T : class , IEntity , new(){}使用where来限定T必须是class, 必须是继承自IEntity的类型,而且该类必须有无参构造函数前面两个好理解,new()的意思就是说该类必须有公共的无参构...原创 2019-07-18 10:13:03 · 2497 阅读 · 0 评论 -
C# Linq Enumerable和 IEnumerable以及 IEnumerable<TSource>的转化
C# 中有Enumerable和 IEnumerable以及 IEnumerable<TSource>Enumerable:意为可枚举的这三个常常让人搞混,简单来说Enumerable:位于System.Core程序集,System.Linq下,是一个静态类,里面包含了很多linq的扩展方法IEnumerable:位于mscorlib程序...原创 2019-06-22 15:36:15 · 6036 阅读 · 1 评论 -
Inspection of unmanaged type requires unmanaged debugging to be enabled需要启用非托管调试,请将调试器类型设置为“mixed”
在调试代码时,查看C++变量 提示如下:Inspection of unmanaged type 'xxx**' requires unmanaged debugging to be enabled. Please set the debugger type to 'Mixed' and try again检查非托管类型“xxx**”需要启用非托管调试。请将调试器类型设置为“mix...原创 2019-06-12 10:00:10 · 2666 阅读 · 1 评论 -
C# Linq中 Wher<T> 和Select<T> 的区别
要使用Linq之前,必须加入using System.Linq,不然你会发现点半天,点不出来select 和where这些方法首先Action 和Func 是两个delegate,区别是Action是没有返回值的,而Func是有返回值的,但是参数没有限制。看一下这两者的声明:in代表传入参数,out代表返回值,这两个都是C#的关键字public delegate void...原创 2019-05-06 21:39:19 · 1575 阅读 · 0 评论 -
CefSharp 使用问题记录
背景:CEF :是一个C/C++库,使用了google的chrome 开源内核WebKit引擎,可以允许开发者将网页嵌入CEF中进行展示CefSharp:是一个基于CEF,使用C++/CLI进行二次开发封装,使.NET开发者可以使用C# 来控制CEFCefSharp有Winform和WPF两个版本1.网页打开速度问题:使用了最简单的新建项目,打开网页明显感觉并没有chr...原创 2018-12-18 18:56:41 · 3836 阅读 · 0 评论 -
C# 使用HttpClient获取cookie
代码如下:using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Net;using System.Net.Http;using System....原创 2019-03-28 21:02:53 · 9175 阅读 · 0 评论 -
C#调用C++ DLL动态库的两种方式
第一种方式:C++导出函数, c#dllimport 的方式在很多地方都看到过,如[dllimport “user32.dll”]这种代码,调用windows API,就是通过这种方式实现 例子:新建C++项目,创建动态链接库(DLL),然后添加头文件textdll.h #pragma once#ifdef A_EXPORTS#define DLL_API __dec...原创 2017-10-19 16:00:07 · 3563 阅读 · 0 评论 -
C#和JS交互 WebBrowser实例
本文实现了WebBrowser的简单例子1.tian引用System.Windows.Froms.dll2.引用WindowsFormsIntegration.dll代码如下: public partial class MainWindow : Window { public MainWindow() {原创 2017-07-21 15:23:29 · 2641 阅读 · 0 评论 -
C# event 和delegate的区别
其实说实话 event和delegate 并没有什么特别大的区别,event其实就是特殊化的delegate1.调用上event只能+=和-=,这样做的意义是为了防止,其余的方法覆盖,但是delegate并没有这种限制,不仅可以+=,-=,还可以直接=一个方法。2.接口中可以包容方法、属性以及索引器,事件,但不能包含委托,因为接口定义的是成员,而委托定义的是一个类型,而事件其实是一个成员原创 2017-09-18 20:17:14 · 2859 阅读 · 0 评论 -
C# 如何比较版本号大小
这几天遇到了一个数据迁移的问题,因为配置文件的结构发生变化,所以要把低版本的用户数据保存下来,存到最新版本中去。这里就有一个比较版本号大小的问题了,网上乱七八糟算法一堆,大致意思就是用分割字符串的方法,比如2.1.2和2.2.4,挨个比较,用递归来处理等等的,其实C#自带一个类Verson ,可以满足大部分关于版本的类似需求。写了个小程序,可以自己去验证,在两个textbox中输入版本原创 2016-09-26 14:36:00 · 10406 阅读 · 2 评论 -
C# 中的invoke和begininvoke
原文地址:http://www.cnblogs.com/Z-King/archive/2011/11/03/2234337.html 1. control中的invoke、begininvoke。 2. delegrate中的invoke、begininvoke。 这两种情况是不同的,我们这里要讲的是第1种。下面我们在来说下.NET中对invoke和begin转载 2017-07-26 19:51:37 · 3060 阅读 · 0 评论 -
C# 详解反射
原博客:http://www.cnblogs.com/Stephenchao/p/4481995.html两个现实中的例子:1、B超:大家体检的时候大概都做过B超吧,B超可以透过肚皮探测到你内脏的生理情况。这是如何做到的呢?B超是B型超声波,它可以透过肚皮通过向你体内发射B型超声波,当超声波遇到内脏壁的时候就会产生一定的“回音”反射,然后把“回音”进行处理就可以显示出内脏的情况了(转载 2017-08-01 14:15:46 · 284 阅读 · 0 评论 -
论C#的多继承
意外中看到这篇博客,很有意思!本文转自:http://www.cnblogs.com/leotsai/p/csharp-multi-inheritance.htmlC#多继承的讨论似乎是个古老的问题了,但今天本文要向大家展示的C#多继承可能是大家闻所未闻见所未见的,甚至是发明C#语言的人也不曾想到我会这样去写代码,并且自得其乐。 说起多继承,首先大家可以想想这个问题:你知道在C转载 2016-11-24 19:37:27 · 5808 阅读 · 0 评论 -
C#中的程序集和命名空间
作为一个.NET程序员有必要对命名空间和程序集有明确的认识,下文很好解释了这两者的关系,感谢作者!本文转自:http://www.cnblogs.com/netlyf/archive/2009/09/17/1568389.html 原作者:NetLYF如果说命名空间是类库的逻辑组织形式,那么程序集就是类库的物理组织形式。只有同时指定类型所在的命名空间及实现该类型的程序集,转载 2016-11-24 19:12:42 · 1240 阅读 · 0 评论 -
C# 通过URL得到图片的问题
public static Image get_Fill_image(string url) { var image = new Image(); image.Source = new BitmapImage(new Uri(url, UriKind.Absolute)); image.Stretch = St原创 2016-12-06 20:05:58 · 17410 阅读 · 5 评论 -
遍历list时删除元素的正确做法
我们往往会遇到需要删除list中满足条件的元素。举例:List list_str =new List(){ "A","B","B","C","D"}不能用foreach,因为在迭代的过程中修改元素会使程序崩溃,也不能直接for循环,因为循环过程中会跳过第二个“B”,导致没删干净想要删除所有的B,最好用for循环倒序遍历的办法:for(int i=原创 2017-12-08 15:04:37 · 1882 阅读 · 0 评论 -
C# 模拟POST上传图片
做到一个上传图片的需求,网页已经可以了,模拟网页在客户端上传图片,试了很多次都没成功,最后发现是少了一个换行符,而且是网页上的字符全部一字不漏的转换成文件流,上传。先看下网页下的完整请求: 前面这个是头,PNG开头后面这一串是二进制流 这个是尾部,跟在PNG的二进制流后面然后代原创 2016-10-27 19:27:32 · 8958 阅读 · 0 评论 -
C# 使用$拼接字符串
拼接字符串常用的有以下4种:1. 使用加号 +stirng str="a";str= "a"+"b";string是引用类型,保留在堆上,用的时候传的是内存中的地址,每次修改就会重新创建一个新的string对象来存储字符串,原有的会被自动回收。第一种方式的实现原理,第一步先在内存中分配空间,存储str变量的对象,值为"a", “+”时,又会重新创建一个对象来存储新的字符...原创 2019-04-02 11:21:00 · 10210 阅读 · 1 评论 -
C#扩展方法和静态类详解
1.静态方法属于类,而普通方法则属于对象,因此静态方法可以用类名.静态方法 来调用,而普通方法则必须用new来实例化后调用2.静态类中只能有 静态的方法,属性和变量3.普通类中能有普通方法,也能有静态类。在调用里面的静态方法时,可以使用普通类名.静态方法来调用,不需要实例化类扩展方法:扩展方法的核心三要素是静态类,静态方法,和this参数。既在静态类中定义的静态方法...原创 2017-09-06 08:44:10 · 3034 阅读 · 0 评论