c#中list排序

8363次阅读|37次收藏|221次赞

我们通常使用泛型集合来存放数据,常见的如:List 、Dictionary等。在使用这些泛型集合时我们有时需要对其进行排序,一般用到的是继承IComparer<T>接口,实现int IComparer<T>.Compare(T t1, T t2)方法。下面介绍c#中list排序的实现方法

C#选择排序

1229次阅读|422次收藏|48次赞

选择排序是通过每一趟排序过程中从待排序记录中选择出关键字最小(大)的记录,将其依次放在数据表的最前或最后端,直到全部待排序的数据元素排完。 选择排序是不稳定的排序方法。选择排序的交换操作介于 0 和 (n - 1)次之间,选择排序的比较操作为 n (n - 1)/ 2 次之间,选择排序的赋值操作介于 0 和 3 (n - 1)次之间。

C#中的反射

1649次阅读|193次收藏|215次赞

反射(Reflection)是.NET中的重要机制,通过反射,可以在运行时获得.NET中每一个类型(包括类、结构、委托、接口和枚举等)的成员,包括方法、属性、事件,以及构造函数等。还可以获得每个成员的名称、限定符和参数等,就跟我们普通使用程序集一样。下面简单介绍C#中如何使用反射。

C#快速排序

1419次阅读|263次收藏|96次赞

快速排序是对冒泡排序的一种改进。其思路为:任取待排序序列中的某个元素对象作为基准,按照该元素值的大小,将整个序列划分为左右两个子序列:左侧子序列中所有元素的值都小于或等于基准对象元素的值,右侧子序列中所有元素的值都大于基准对象元素的值,基准对象元素则排在这两个子序列中间(这也是该对象最终应该被安放的位置),接下来分别对这两个子序列重复进行上述过程,直到所有的对象都排在相应位置上为止。

ref和out区别有哪些

1265次阅读|57次收藏|121次赞

在C# 中,既可以通过值也可以通过引用传递参数。通过引用传递参数允许函数成员更改参数的值,并保持该更改。若要通过引用传递参数, 可使用ref或out关键字。ref和out这两个关键字都能够提供相似的功效,其作用也很像C中的指针变量。两者主要区别是:使用ref型参数时,传入的参数必须先被初始化。对out而言,必须在方法中对其完成初始化。

C#如何读取csv格式文件

2598次阅读|143次收藏|105次赞

CSV是(逗号分隔值)的英文缩写,通常都是纯文本文件。CSV档包含了四或五个字段(部分),由左至右分别记载着:文件名称、档案大小(以BYTE为单位)、CRC32值(八个英文字母或数字组成)、档案路径和档案内容描述。csv格式文件经常用来作为不同程序之间的数据交互的格式。 那么,C#如何读取csv格式文件呢?

单元测试中Assert类

6787次阅读|178次收藏|386次赞

单元测试可以使用能够创建测试的初始源代码的代码自动生成来创建单元测试,也可以由使用者手动编写测试代码。无论使用何种方法,测试类和所有测试方法都用编程属性加以标识。其主要步骤是通过直接调用类的方法并传递参数来执行其他源代码。然后,如果在测试中包含有Assert语句,他可以测试得到值与我们所期望的值是否相符。下面介绍单元测试中Assert类的用法

dropdownlist绑定枚举值

1998次阅读|203次收藏|252次赞

在项目中,我们已习惯将较稳定的分类标准定义为枚举,来保证程序中取值的合法性,也使代码更清晰。某些情况下我们需要在DropDownList等选择控件上绑定某个枚举的所有枚举值,供用户自行选择,这时就需要将枚举值转换为DropDownList等的选项值,可以用反射获取所有的枚举值绑定DropDownList上。

C#静态变量、静态方法、静态类

7563次阅读|398次收藏|313次赞

C#中静态变量、静态方法、静态类通过static关键字修饰,不能使用 new 关键字创建静态类的实例。静态方法和属性不能访问其包含类型中的非静态字段和事件,并且不能访问任何对象的实例变量;静态成员变量是和类相关联的,可以作为类中"共"有的变量,不依赖特定对象的存在,访问的时候通过类名加点操作符加变量名来访问.

C#中Serializable序列化

3677次阅读|11次收藏|336次赞

序列化是指将对象实例的状态存储到存储媒体的过程。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列化时,将创建出与原对象完全相同的副本。下面简单介绍C#中如何利用Serializable序列化

非托管资源的回收

2403次阅读|68次收藏|161次赞

GC(垃圾收集器)只能回收托管(Managed)内存资源,对于数据库连接、文件句柄、Socket连接等这些资源(非托管资源,UnManaged)就需要控制资源的回收。在C#里面有2种机制来回收未托管资源:声明一个析构函数(或终结器),作为类的一个成员;实现IDisposable接口,但需要确保执行Dispose()方法。

C#中is、as的区别

1651次阅读|238次收藏|152次赞

as是C#中用于类型兼容性判断和类型转换的操作符,它同时进行类型的判断和类型的转换,当转换失败时,as运算符将产生空,而不是引发异常。is是C#中用于类型兼容性判断的操作符,检查一个对象是否兼容于其他指定的类型, 如果一个对象是某个类型或是其父类型的话就返回为true,否则的话就会返回为false。

virtual和abstract的区别

1433次阅读|369次收藏|322次赞

C#中,容易混淆virtual方法和abstract方法的使用,abstract方法只能在抽象类中声明,虚方法则不是。abstract方法必须在派生类中重写,而virtual则不必.而abstract修饰的方法一定不能实现。virtual可以被子类重写,而abstract必须被子类重写,如果重写了virtual修饰的方法,前面必须添加override,而且必须有实现,否则编译出错;

C#正则表达式Regex类的用法

55134次阅读|411次收藏|87次赞

正则表达式的本质是使用一系列特殊字符模式,来表示某一类字符串,正则表达式无疑是处理文本最有力的工具,而.NET提供的Regex类实现了验证正则表达式的方法。Regex 类表示不可变(只读)的正则表达式。它还包含各种静态方法,允许在不显式创建其他类的实例的情况下使用其他正则表达式类。

C#中Dispose、析构函数、close的区别

12552次阅读|277次收藏|362次赞

C#中析构函数 和 Dispose 都是释放资源,析构函数用于 隐式释放资源,Dispose用于 显式释放资源,也就是析构函数 是对象不可访问后自动被调用的,Dispose 是类使用者调用的;close方法表示关闭资源,并不一定代表会释放资源。