分类 C# 下的文章

C#键盘改键功能

上一篇有写利用HOOK来做的一个键盘记录器,这次我们来做一个改键功能。

这个功能有什么用呢?打个比方,假如我键盘某个键坏了,比如回车键(这个键很重要),在没有备用键盘的情况下我们就可以用此功能来暂时顶替下;当然也可以做连击(摁一次等于摁10次)、组合键(只摁A键就实现ABC三个键全摁)或者快捷键之类的功能。

键盘HOOK工具类在这里就不写了,在上一篇已经写过了,没有做任何改动;这里写下调用的过程。

阅读剩余部分

C#泛型的主要约束和次要约束是什么?

当一个泛型参数没有任何约束时,它可以进行的操作和运算是非常有限的,因为不能对实参进行任何类型上的保证,这时候就需要用到泛型约束。泛型的约束分为:主要约束和次要约束,它们都使实参必须满足一定的规范,C#编译器在编译的过程中可以根据约束来检查所有泛型类型的实参并确保其满足约束条件。

阅读剩余部分

能说说C#泛型的基本原理吗?

泛型的语法和概念类似于C++中的template(模板),它是.NET 2.0中推出的众多特性中最为重要的一个,方便我们设计更加通用的类型,也避免了容器操作中的装箱和拆箱操作

假如我们要实现一个排序算法,要求能够针对各种类型进行排序。按照以前的做法,我们需要对int、double、float等类型都实现一次,但是我们发现除了数据类型,其他的处理逻辑完全一致。这时,我们便可以考虑使用泛型来进行实现:

阅读剩余部分

你知道C#数组之间如何转换的吗?

数组类型的转换需要遵循以下两个原则:

(1)包含值类型的数组不能被隐式转换成其他任何类型;

(2)两个数组类型能够相互转换的一个前提是两者维数相同;

我们可以通过以下代码来看看数组类型转换的机制:

阅读剩余部分