随笔分类 -  C#基础

摘要:extern,是指方法在外部实现,跟DllImport属性一起使用。比如用c语言写了一个dll,可利用DllImport去调用dll,示例如下: [DllImport("avifil32.dll")] private static extern void AVIFileInit(); 自定义的异常类是从ApplicationException派生。反射的定义:.net应用程序由几个部分:程序集(Assembly)、模块(Module)、类型(Class),而反射提供一种编程的方式,让程序员可以在程序运行期货的这几个组成部分的相关信息。即在运行期间动态加载不同的程序集或类。可 阅读全文
posted @ 2011-09-01 12:00 苏先森1989 阅读(1519) 评论(0) 推荐(0)
摘要:一直对接口半生不熟,我想一些像我一样的新手也有同样的困惑。下面系统复习下咯。有异议或疑惑的欢迎讨论咯~ .net基类库中有很多预定义的标准接口,我们自己的自定义类型完全可以实现这些预定义的接口,来支持对喜那个克隆、对象枚举和对象排序。 接口就是一组抽象成员的集合。接口里的成员不能有访问修饰符,并且方法不能有实现。 接口对比抽象基类,有一个面向对象的体系,如果用抽象基类来实现多态接口,意味着所有的子类都有这个“接口”的特性;如果是接口作为动态接口,那么只是实现它的类才需要实现方法,而这个实现接口的l类的子类从概念并不是接口的孙类。并且接口能作为多个面向对象体系的多态接口,而不是建造一个共有的超. 阅读全文
posted @ 2011-08-14 11:21 苏先森1989 阅读(326) 评论(0) 推荐(0)
摘要:维护内部非托管资源的托管类的手段:Finalize()--终结和Dispose()--处置非托管资源:原始的操作系统文件句柄,原始的非托管数据库连接,非托管内存或其他非托管资源。Finalize()特性:重写Finalize()的唯一原因是,c#类通过PInvoke或复杂的COM互操作性任务使用了非托管资源(典型的情况是通过System.Runtime.InteropServices.Marshal类型定义的各成员)注:PInvoke是平台调用服务。object中有finalize方法,但创建的类不能重写此方法,若Overide会报错,只能通过析构函数来达到同样的效果。Finalize方法的作 阅读全文
posted @ 2011-08-13 16:39 苏先森1989 阅读(394) 评论(0) 推荐(1)
摘要:.net对象是被分配到一块叫做托管堆(managed heap)的内存区域上。new一个对象,返回的是一个指向堆上的引用,而不是真正的对象本身,这个对象保存在栈上。内存管理法则:1、new后不用再管。2、如果托管堆上没有足够的内存,就会进行垃圾回收。应用程序根:根就是一个存储位置,保存着对堆上一个对象的引用,可以是以下几种类别: 全局对象的引用(虽然在c#不允许,但是CIL的确允许分配全局对象) 静态对象/静态字段的引用 应用程序的代码库的局部对象的引用 传递进一个方法的对象参数的引用 等待被终结的对象的引用 任何引用对象的CPU寄存器 在一次垃圾回收过程中,运行库将检查托管堆上的对象,判断应 阅读全文
posted @ 2011-08-12 23:11 苏先森1989 阅读(672) 评论(2) 推荐(1)
摘要:此系列文章根据《C#与.NET 3.5高级程序设计(第四版)》进行笔记。this的两个作用c#提供this关键字来提供对当前类实例的访问。即构造函数中,this.name=name.使用this进行串联构造函数调用。P117静态成员只能操作静态数据或调用类的静态方法。因为静态成员是类级别的,静态成员是在没有实例话的情况下可被调用,而非静态成员必须有实例对象。静态构造函数。静态构造函数的目的在于构造函数只执行一次,因为构造函数中一般会初始化数据,静态构造函数可使得只初始化数据一次。一个类(或结构)只可以定义一个静态构造函数。静态构造函数不允许访问修饰符并且不能接受任何参数。无论创建了多少类型的对 阅读全文
posted @ 2011-07-31 16:43 苏先森1989 阅读(508) 评论(0) 推荐(2)
摘要:此系列文章根据《C#与.NET 3.5高级程序设计(第四版)》进行笔记。函数参数修饰符:(无):按值传递out:被此修饰符修饰的参数是作为输出的参数,如add(int a,int b,out int sum),注意两点:1、方法内sum必须被赋值,否则出错。2、out用法有一个好处就是可定义多个输出参数,使得一个函数可有多个返回值。如add(int a,int b,out int sum,out int count)。输出参数为按引用传递。params:如add(params double[] values),调用方法时只需这么做而不用创建数组:add(0.7,8.99,2)。其实CLR还是会 阅读全文
posted @ 2011-07-31 11:05 苏先森1989 阅读(360) 评论(0) 推荐(3)
摘要:此系列文章根据《C#与.NET 3.5高级程序设计(第四版)》进行笔记。 不管是值类型还是引用类型,都是继承自object。 掌握宽化和窄化数据类型转换。宽化即将short类型的值传入参数类型为int型的方法中,自动将short宽化为int。也可用Convert来进行宽化和窄化处理。 P73 checked关键字:可以将语句包含起来,以检测数据相加、相乘、相减和相除时可能产生的溢出,即不允许数据丢失。 形式有两种:checked(.....)和checked {...; ...; } P76 也可由VS的设置来设置项目级别的溢出检测。具体设置:P76 若已启用项目级别的设置,如果有一段代码的数 阅读全文
posted @ 2011-07-30 11:56 苏先森1989 阅读(250) 评论(0) 推荐(0)