随笔分类 - C#
摘要:写在前面的话 对于构造函数,我们都很熟悉,用于在实例化类的时候,使用new关键字,new出一个实例来供使用。 那么对于静态构造函数,充当的是什么角色呢,它和非静态构造函数有什么区别呢?它又有什么好处呢? 描述 静态构造函数用于初始化任何静态数据(静态方法里只能引用静态字段,静态构造函数也属于静态方法的一种)。 静态构造方法在创建第一个实例或引用类的静态变量之前,会自...
阅读全文
摘要:"Lambda表达式"是一个匿名函数,它可以包含表达式和语句.并可用于创建委托或表达式目录树类型. 运算符 所有Lambda表达式都是用Lambda运算符=>,读做goes to.该运算符左边是输入参数,右边包含表达式或语句块. Lambda表达式 x=>x*x读作 x goes to x 乘 x.可将此表达式分配给委托类型. 例: 在上例中,请注意委托的参数是一个具有int类型...
阅读全文
摘要:关于泛型方法,类Enumerable内含相当多的泛型方法的使用.Enumerable类定义的注释如下: 由此注释,我们可以看到,凡是实现了System.Collections.Generic.IEnumerable<TSource>的对象都可以使用此类中定义的方法.挑其中一个方法来看.返回值IEnumerable<TResult>:返回值类型:System.Collect...
阅读全文
摘要:描述: 泛型是具有占位符(类型参数)的类、结构、接口和方法。 泛型集合类可以将类型参数用作它存储的对象的类型。 泛型方法可以将其类型参数用作其返回值的类型或某个形参的类型。 例1:泛型类定义. 定义一个类Generic,当给予其int类型时,Field字段的类型是int;当给予其string类型时,Field字段的类型是string. 例2:泛型方法定义是具有两个参数列表的方法:一个泛型类型...
阅读全文
摘要:描述: 封装一个方法,该方法只采用一个参数并且不返回值. 语法: T:参数类型:此委托封装的方法的参数类型arg:参数:此委托封装的方法的参数备注:通过此委托,可以将方法当做参数进行传递.其他形式:例子:结果:12111567891013
阅读全文
摘要:描述: 封装一个具有一个参数并返回TResult参数指定的类型值的方法. 语法: 参数类型:T:此委托封装的方法的参数类型.TResult:此委托封装的方法的返回值类型.参数:arg:委托封装的方法的参数返回值:此委托封装的方法的返回值备注:可以使用此委托构造一个能以参数形式传递的方法,而不用显式声明自定义的委托.该方法必须与此委托的方法签名想对应.也就是说,封装的方法必须具有一个通过值传递给它...
阅读全文
摘要:下例演示了C#1.0到3.0委托的创建过程: 结果: 在C#1.0中,可以通过使用在代码中其他位置定义的方法显式初始化委托来创建委托的实例.在C#2.0中,可以使用匿名方法的概念,在声明委托的同时赋值给其代码段,此代码段即为一个匿名方法在C#3.0中,可以使用Lambda表达式,这种表达式与匿名方法类似,更为简练.
阅读全文
摘要:对象相等比较机制对于引用类型的变量和值类型的变量来说是不同的,下面分别介绍引用类型和值类型的相等比较. 首先来看System.Object的部分定义:System.Object中定义了三个比较是否相等的方法.还有一个运算符(==),这个运算符可以比较引用,也可以比较值.下面来详细的介绍这四个方法:1。引用类型的相等比较方法1:public static bool ReferenceEquals(o...
阅读全文
摘要:什么时候会需要使用ref和out 有时,我们会需要获取某个值在方法中的运行状态,根据定义的方法,我们仅仅能够获得一个返回值,但是,有时我们也许想获取多个值,通过返回值就不能返回这样的信息,我们可以通过在参数前使用ref或out,以得到多个返回值. 在执行Sql存储过程时,我们可以通过sql语句在存储过程中的运行状态,返回相应的值.sql的return只支持Int格式的返回值,通过使用ref或ou...
阅读全文
摘要:is运算符: is运算符可以检查对象是否与特定的类型兼容. as运算符: as运算符用于执行引用类型的显式类型转换.如果要转换的类型与指定的类型兼容,转换就会成功,否则,返回null. sizeof运算符: 使用sizeof运算符可以确定堆栈中值类型需要的长度. typeof运算符: typeof运算符返回一个表示特定类型的System.Type对象.在使用反射,动态的查找对象的信息时,这...
阅读全文
摘要:引用: 序列化与反序列化 解释: 序列化,就是将一个对象保存到文件中去,而反序列化就是将该文件重新保存为一个对象. 序列化的三种方式: 1.BinaryFormatter class BinarySerialize : ISerialize { FileStream fs; string filepath = @"D:/1/1.txt"; public void Serialize(Book ...
阅读全文
摘要:前言: 单位 描述 bit 位.一个二进制数据0或1,是1bit byte 字节:存储空间的基础单位.1byte=8bit b=bit 表示“位”B=Byte 表示“字节” 代码: public class FileSize{ DirectoryInfo Dic; public FileSize(string FolderPath) { // //TODO: 在此处添加构造函数逻辑 // D...
阅读全文
摘要:在C#中,方法的参数类型有四种: 值类型 引用类型 输出类型 数组型参数 值参数: 所谓值参数,就是利用值向方法传递参数时,编译程序给实参的值做一份拷贝,并将此拷贝传递给该方法,这样做的结果就是被调用的方法不会修改实参的值,保证了实际值的安全,在调用方法时,如果形参的类型时值类型的话,必须保证实参的类型也是值类型的数据. 例子:public class MyClass{ public My...
阅读全文
摘要:类型比较: 在比较对象时,常常需要知道它们的类型,这样才能确定是否可以进行值的比较. 方法一. 可以将GetType()方法和typeof()运算符一起使用,就可以确定对象的类型. 例子: int i = 10; if (i.GetType() == typeof(Int32)) { Response.Write("Type Of Int32"); }方法二:is运算符.is运算符并不是说明对...
阅读全文
摘要:接口: 不允许使用访问修饰符,所有接口成员都是公共的. 接口成员不能包含代码体. 接口不能定义字段成员. 接口成员不能使用关键字static,vritual,abstract,sealed来定义. 类型定义成员是禁止的. 如果要隐藏继承了接口中的成员,可以用关键字new来定义它们.public interface IMyInterface{ void DoSomething();}public ...
阅读全文
摘要:virtual:使用此关键字,可以使其在派生类中被重写. abstract:抽象方法,由子类重写,或继续为抽象方法存在,并由其子子类实现. override: 重写父类方法,属性,或事件的抽象实现或虚方法. new:显式隐藏从父类继承的成员. 后台代码: public abstract class Animal{ public abstract void Eat(); public virtua...
阅读全文