c# Emit技术解析
我们常常有一个应用场景,由我们的C#代码,动态生成一个EXE,其应用场景可以非常多,比如软件授权,可以输入授权信息后,生成一个授权的DLL等,那如何实现这个功能呢,就要提到一个技术Emit。
1、Emit概述
Emit,可以称为发出或者产生。在Framework中,与Emit相关的类基本都存在于System.Reflection.Emit命名空间下。 ...
一个C#开发者重温Java的心路历程
前言
我们都知道软件开发是工科,不是理科;本质上和电工、钳工是一样的。
也就是说,软件技术成长也与电工、钳工的技术成长是一样的,靠的是练,而不是学。
所以,很多时候,我们称应届大学生是一张白纸,啥也不会。
不论他在学校学的多好,都没用,因为他没练过,不能干活;同理,不论他在学校学的多差,进入工作岗位后, ...
C#反射与特性(七):自定义特性以及应用
目录1,属性字段的赋值和读值2,自定义特性和特性查找2.1 特性规范和自定义特性2.1.1 定义特性2.1.2 限制特性的使用2.1.3 特性的构造函数和属性2.2 检索特性2.2.1 方式一2.2.2 方式二3,设计一个数据验证工具3.1 定义抽象验证特性类3.2 实现多个自定义验证特性3.3 检查特性是否属于自定义验证特性3.4 检查属性值是否符合自 ...
C# 数独求解算法
前言
数独是一种有趣的智力游戏,但是部分高难度数独在求解过程中经常出现大量单元格有多个候选数字可以填入,不得不尝试填写某个数字然后继续推导的方法。不幸的是这种方法经常出现填到一半才发现有单元格无数可填,说明之前就有单元格填错了把后面的路堵死了。这时就需要悔步,之前的单元格换个数重新试。然而更坑的是究 ...
C#容器介绍
在C#中,数组由于是固定长度的,所以常常不能满足我们开发的需求。
由于这种限制不方便,所以出现了ArrayList。
ArrayList、List<T>
ArrayList是可变长数组,你可以将任意多的数据Add到ArrayList里面。其内部维护的数组,当长度不足时,会自动扩容为原来的两倍。
但是ArrayList也有一个缺点,就是存入ArrayList里面的数据 ...
C# 事件(Event)
事件(Event)
基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。
C# 中使用事件机制实现线程间的通信。
通过事件使用委托
事件在类中声明且生成,且通过使用同一个类或其他类中的委托与事件处理程序关联。包含事件的类用 ...
C# async await 死锁问题总结
可能发生死锁的程序类型
1、WPF/WinForm程序
2、asp.net (不包括asp.net core)程序
死锁的产生原理
对异步方法返回的Task调用Wait()或访问Result属性时,可能会产生死锁。
下面的WPF代码会出现死锁:
private void Button_Click_7(object sender, RoutedEventArgs e)
{
Method1().Wait ...
C# .net 环境下使用rabbitmq消息队列
消息队列的地位越来越重要,几乎是面试的必问问题了,不会使用几种消息队列都显得尴尬,正好本文使用C#来带你认识rabbitmq消息队列
首先,我们要安装rabbitmq,当然,如果有现成的,也可以使用,不知道曾几何时,我喜欢将数据库等等软件安装在linux虚拟机,如果没现成的rabbitmq,按照下面的来吧,嘿嘿
rabbitm ...
[译文] C# 8 已成旧闻, 向前, 抵达 C# 9!
原文链接: C# 8 is old news. Onward, to C# 9!
Did you know that planning is already underway for the ninth version of the C# language?
第九版 C# 语言已经在开发中了, 你晓得伐?
Now, to be fair, this has been in the planning phases long, LONG, before C# 8 shipped to us back in September 2019, as you ...
C#反射与特性(一):反射基础
C#反射与特性(一):反射基础
目录C#反射与特性(一):反射基础1. 说明1.1 关于反射、特性2. 程序集操作2.1 获取 程序集对象(Assembly)2.1.1 运行时获取程序集2.1.2 使用方法2.1.3 从文件加载程序集2.1.4 使用方法2.2 Assembly 使用2.2.1 获取程序集完全限定名称2.2.2 AssemblyName2.3 获取程序集的方式2.3.1 Assembly.Load ...
C、C++和C#区别概述
译者前言
今天突然好奇C、C++和C#这三门语言都有个C,那么它们之间到底有什么关联呢。所以就去Google了,找到了这篇文章:Understanding the Differences Between C#, C++, and C - C# Station。看完感觉写得挺好的,就打算翻译出来。
需要注意的是,本人技术十分有限,从事的也并不是编程相关的工作,因此翻译的准确性可能 ...
关于C#异步编程你应该了解的几点建议
前段时间写了一篇关于C#异步编程入门的文章,你可以点击《C#异步编程入门看这篇就够了》查看。这篇文章我们来讨论下关于C#异步编程几个不成文的建议,希望对你写出高性能的异步编程代码有所帮助。注:本文的很多内容都是学习《Effective C#》的总结。
作者:依乐祝
原文地址:https://www.cnblogs.com/yilezhu/p/12099219. ...
C# 程序集(Assembly)
程序集
程序集是代码进行编译是的一个逻辑单元,把相关的代码和类型进行组合,然后生成PE文件。程序集只是逻辑上的划分,一个程序集可以只由一个文件组成,也可由多个文件组成。不管是单文件程序集还是多文件程序集,它们都由固定的结构组成
常见的两种程序集:
可执行文件(.exe文件)和 类库文件(.dll文件)。
在VS ...
C#异步编程入门看这篇就够了
随着.NET Core的流行,相信你现在的代码中或多或少的会用到async以及await吧!毕竟已成标配。那么我们为什么要用async以及await呢?其实这是微软团队为我们提供的一个语法糖,让我们不用996就可以轻松的编写异步代码,并无太过神奇的地方。那么,问题来了,什么是异步?异步到底又是怎样的一个过程呢?
从一个故事说起
在开 ...
《Dotnet9》系列-开源C# Winform控件库1《HZHControls》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员。我最近在写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用dotnet技术更好的运用于工作和学习中去。
文章阅读导航
一、写在前面的话
二、HZHControls介绍
2.1 控件
2.1.1 表单控件
2.1.2 按钮
2.1.3 选项卡
2. ...
[译]C#8.0中一个使接口更加灵活的新特性-默认接口实现
9月份的时候,微软宣布正式发布C#8.0,作为.NET Core 3.0发行版的一部分。C#8.0的新特性之一就是默认接口实现。在本文中,我们将一起来聊聊默认接口实现。
作者:依乐祝
原文链接:https://www.cnblogs.com/yilezhu/p/12034584.html
提前说下:
这实际上是一种基于特性的编程技术,可以在几个无关类之间进行方法的重用 ...
C# 特性(Attribute)
Attribute是什么
Attribute是一种可由用户自有定义的修饰符(Modifier),可以用来修饰各种需要被修饰的目标。我们可以对类、以及C#程序集中的成员进行进一步的描述。
简单地说,Attribute就是一种“附着物”——就像牡蛎吸附在船底或礁石上一样。 这些附着物的作用是为它们的附着体追加上一些额外的信息(这些信息保 ...
《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员。我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用dotnet技术更好的运用于工作和学习中去。
历经3个白天2个黑夜(至凌晨2点),Dotnet9小编经过反复修改、润色,终于完成此文编写(本文略长,手机党请 ...
C#使用Consul集群进行服务注册与发现
前言
我个人觉得,中间件的部署与使用是非常难记忆的;也就是说,如果两次使用中间件的时间间隔比较长,那基本上等于要重新学习使用。
所以,我觉得学习中间件的文章,越详细越好;因为,这对作者而言也是一份珍贵的备忘资料。
Consul简介
Consul一个什么,我想大家通过搜索引擎一定可以搜索到;所以,我就不在重复他的官方 ...
C# 异步编程
基于Task的异步编程模式(TAP)是Microsoft为.Net平台下使用Task进行编程所提供的一组建议,这种模式提供了可以被await消耗(调用)方法的APIs,并且当使用async关键字编写遵守这种模式的方法时,手写Task通常很有用。通常TAP用起来与普通方式没什么两样,但是不支持ref和out参数。
&nbs ...