随笔分类 -  C#

摘要:阅读目录 一:概念 二:实例 三:运行效果 一:概念 在C#中,使用ToString方法将其他类型(如 int、double、DateTime、Decimal)转换为字符串时,可以指定字符串的显示格式。 二:实例 static void Main(string[] args) { string str1 = 12345.ToString("n"); Console.WriteLine("12345.ToString(\"n\") = {0}", str1); string str2... 阅读全文
posted @ 2012-06-28 22:57 David-散步的蜥蜴 阅读(979) 评论(0) 推荐(1)
摘要:阅读目录 一:特性 二:如何指定属性? 三:.NET框架提供了哪些内置属性? 四:实例 一:特性 . C#允许在类和类成员上声明特性,这些特性其实也是个类,可以在运行时解释类和类成员的行为,这个特性我们也称之为属性Attribute . .NET框架提供的内置属性比如:Obsolete是一种特殊的用以声明式的编程机制,其类型是一族继承自System.Attribute的类型,在编译时,这些.NET内置属性会被写入元数据中,以供程序运行或者反射使用 . 允许在其上面声明属性的类型有 1:类和类成员 2:结构 3:接口和接口成员 4:枚举和枚举成员 5:委托 二:如... 阅读全文
posted @ 2012-04-05 09:44 David-散步的蜥蜴 阅读(840) 评论(0) 推荐(0)
摘要:阅读目录 一:什么是元数据? 二:概述.NET框架中的反射 一:什么是元数据? 元数据,就是描述数据的数据,它存储在PE文件中,PE文件由IL Code和元数据组成,元数据为.NET提供了丰富的自我描述特性,它使得开发人员可以在代码运行时获得组件的类型等信息 二:概述.NET框架中的反射 反射是.NET框架中最独特的一个特点,这一点在其他技术框架中都没有对应的概念,反射在.NET框架中的地位非常重要,正是存在元数据等信息,才构成.NET系统运行的基础,元数据是反射机制能够动作的基石,元数据存储了类型内部的所有信息,因此可以在.NET框架中运用反射机制可以动态的分析程序集... 阅读全文
posted @ 2012-04-04 20:37 David-散步的蜥蜴 阅读(614) 评论(0) 推荐(0)
摘要:阅读目录 一:前言 二:接口和抽象类的区别是什么? 一:前言 在面向对象编程中,抽象是指定继承者或者实现者必须遵循的一个协定,比如:一个类如果继承或者实现一个接口,那么该类就必须实现该接口的所有成员,接口就是对类的抽象,类必须遵循实现接口所有成员的协定 二:接口和抽象类的区别是什么? 接口和抽象类型是用于在面向对象编程中实现抽象的两种机制,那么在面向对象设计时,什么情况下使用接口实现抽象?什么情况下又使用抽象类型实现抽象呢? 1:接口不能提供成员的实现细节,而抽象类型可以提供成员的实现细节,也就是说接口中的所有方法必须是抽象的,像下面的InserUser()和IGetName... 阅读全文
posted @ 2012-04-04 16:56 David-散步的蜥蜴 阅读(662) 评论(0) 推荐(0)
摘要:Control TypePrefix ExampleButtonbtnbtnOKGrid grd grdPrices3D Panel pnl pnlGroupADO Data ado adoBiblioAnimated button ani aniMailBoxCheck box chk chkReadOnlyCombo box cbo cboEnglishDropdown list box ≥ ddl ddlUserCommand buttoncmd cmdExitCommon dialogdlg dlgFileOpenCommuni... 阅读全文
posted @ 2012-02-18 11:32 David-散步的蜥蜴 阅读(779) 评论(0) 推荐(2)
摘要:阅读目录 一:托管代码 一:托管代码 . 托管代码就是基于.NET元数据格式的代码,运行于.NET平台之上,所有的与操作系统的交换由.NET平台来完成,就像是把这些功能委托给.NET,所以称之为托管代码 . 由公共语言运行库环境执行的代码,而不是直接由操作系统执行的代码,托管代码应用程序可以获得公共语言运行库CLR的服务,例如自动垃圾回收,运行库类型检查,安全支持等服务,这些服务帮助提供独立于平台和语言的,统一的托管代码应用程序行为 . 托管代码不必再担心内存分配,类型安全,公共语言运行时环境管理目标的执行,使用C#或者VB.NET等这些语言编写的代码被称为托管代码,托管代码总是... 阅读全文
posted @ 2012-02-05 14:08 David-散步的蜥蜴 阅读(633) 评论(0) 推荐(1)
摘要:阅读目录 一:.NET Framework 二:公共语言运行库(Common Language Runtime CLR) 三:类库(Class Library) 一:.NET Framework NET Framework简称.NET框架,该框架是微软公司推出的面向对象的软件开发与运行平台,.NET Framework具有两个组件,公共语言运行库(Common Language Runtime CLR)和.NET Framework类库(Class Library) 二:公共语言运行库(Common Language Runtime CLR) 公共语言运行库是所有... 阅读全文
posted @ 2012-02-05 12:55 David-散步的蜥蜴 阅读(754) 评论(0) 推荐(0)
摘要:阅读目录 一:前言 二:非托管代码 一:前言 在讲非托管代码这个概念的时候,我们先提几个涉及到的概念 . 我们“在解释执行和编译执行的区别?” 一文中讲到机器码的概念,机器码是指机器语言(machine language)是一种指令集的体系,这种指令集,称机器码(machine code),是电脑的CPU可直接解读的 . CLR是.NET中的公共语言运行库,也就是说.aspx页面是通过CLR进行编译成dll文件的,因为aspx页面可以用C#/VB.NET/J#等多种语言编写代码,不管那种语言编写的代码都是通过CLR编译后生成同样的dll文件 二:非托管代码 . 非托管代... 阅读全文
posted @ 2012-02-05 12:23 David-散步的蜥蜴 阅读(536) 评论(0) 推荐(0)
摘要:readonly关键字 表示只读的意思,与const不同,readonly关键字只能用于字段,不能用于局部变量,也就是说要使用readonly修饰一个字段或者变量的时候,必须将它声明在类中或者全局变量中,它表示字段值只能在构造器中更改或者在声明时指定 声明方式 class Employee { public readonly string _name; //只读字段值在声明时指定 public readonly int _age = 23; //只读字段值在构造器中更改 public Employee(string name) { _n... 阅读全文
posted @ 2012-02-04 15:18 David-散步的蜥蜴 阅读(309) 评论(0) 推荐(0)
摘要:析构函数 析构函数是在类的破坏时自动执行的操作,析构函数在碎片收集时会自动调用,程序员无法控制何时调用析构函数,因为这是由垃圾回收器决定的 垃圾回收器 与运行时不进行垃圾回收的开发语言相比,C#无需太多的内存管理,这是因为.NETFramework垃圾回收器会隐式的管理对象的分配和释放,垃圾回收器检查是否存在应用程序不在使用的对象,如果垃圾回收器认为某个对象符合析构,则调用析构函数,并回收此对象占用的内存,应用程序退出时也会调用析构函数 为什么使用析构函数? 一般情况下,C#应用程序中很少使用析构函数,但是当应用程序封装窗口,文件和网络连接这些非托管资源时,应该使用析构函数释放这... 阅读全文
posted @ 2012-02-04 14:51 David-散步的蜥蜴 阅读(438) 评论(0) 推荐(0)
摘要:对象初始化器 对象初始化器,就是简化代码,让本来几行写完的代码,一行就写完了 使用对象初始值设定项,可以在创建对象时向对象的任何可访问的字段或属性分配值,而无须显示调用构造函数,其实对象初始化器最大的作用就是减少代码的书写量,把原本一些人做的事情交给了框架 举例 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _13_ObjectInitializers { class Program { static void Ma... 阅读全文
posted @ 2012-02-04 14:11 David-散步的蜥蜴 阅读(431) 评论(0) 推荐(0)
摘要:阅读目录 一:分布类 二:实例 一:分布类 . 为了将在某种意义上讲比其他细节更重要的代码分离出来,可以将一个类的实现划分到多个C#文件中,这就是分布类,比如:有个Pesoon类的源文件叫 Pesoon.cs,有时候为了区分不同开发人员的维护范围,避免定义在同一个文件中造成互相干扰,C#通过分布类的做法,将一个类拆分为多个文件 partial class 类名称 { //类成员 } . 如果使用这种方式定义类,那么要遵循以下原则 1:分布类在每一个源文件中都必须使用partial关键字声明部分类 2:类的部分声明都必须在相... 阅读全文
posted @ 2012-02-03 12:02 David-散步的蜥蜴 阅读(419) 评论(1) 推荐(0)
摘要:类和结构的区别是什么? 结构和类的初始化都用new关键字,但是它们之间的差别很大,主要体现在三个方面 三点区别 1:结构是值类型,类是引用类型 2:结构不支持继承,类可以继承其他类,其自身也能被继承 3:结构没有构造函数和析构函数,类具有构造函数和析构函数 阅读全文
posted @ 2012-02-03 11:57 David-散步的蜥蜴 阅读(464) 评论(0) 推荐(0)
摘要:字段 字段是存储类要满足其设计所需要的数据,字段是与类相关的变量 比如以前讲的Cat类中的private string _name;_name其实就是一个字段,它通常是类的私有变量 属性 属性是一个方法或者一对方法,但在调用它的代码来看,它是一个字段,即属性适合以字段的方式使用方法调用的场合 通常字段都是private,即私有变量,而属性是public,即公有变量,那么在这里_shoutnum就是私有的字段,而ShoutNum就是公有的对外属性,由于是对外的,一般首字母大写,而字段一般首字母并且小写前面加上“_” 属性有两个方法get和set,get访问器返回与声明的属性相同的... 阅读全文
posted @ 2012-02-03 00:07 David-散步的蜥蜴 阅读(582) 评论(0) 推荐(1)
摘要:阅读目录 一:自动属性 二:创建自动属性 三:实例 一:自动属性 . 当属性访问器中不需要其他逻辑时,自动实现的属性可时属性的声明变得更加简洁。 二:创建自动属性 . 一旦在类中声明了自动属性,那么编译器将创建一个私有的匿名后备字段,但是这个私有字段只能通过属性的get和set访问器进行访问。 . 自动属性必须同时声明get和set访问器,假如要创建只读的自动属性,必须在set访问器前加上privvate关键字 三:实例 1 using System; 2 using System.Collections.Generic; 3 using Syste... 阅读全文
posted @ 2012-01-31 18:04 David-散步的蜥蜴 阅读(361) 评论(0) 推荐(0)
摘要:扩展方法 扩展方法是你能够向现有类型和自定义类型添加方法,而无需创建新的派生类型或者以其他方式修改原始类型 扩展方法是一个特殊的静态方法,它定义在一个静态类中,但是可以在其他类型(我们要扩展的那个类)的对象上像调用实例方法那样调用,因此通过扩展方法可以在不修改一个类的前提下对一个类进行功能上的补充 创建扩展方法 扩展方法和一般静态方法定义类似,惟一的区别是在第一个参数的前面加上this关键字,同时第一个参数的类型也决定了扩展方法可以扩展的类型 格式 public static 返回类型 扩展方法名称(this 要扩展的类型sourceObj[,扩展方法参数列表]) 扩展方法的... 阅读全文
posted @ 2012-01-31 17:06 David-散步的蜥蜴 阅读(598) 评论(1) 推荐(2)
摘要:静态方法 定义静态方法和定义非静态方法类似,只是在定义静态方法时,需要在返回值类型前加static关键字,静态方法在程序启动的时候,系统就会为静态方法在内存中创建一个实例,不需要再手动去实例静态方法,通过类名可以直接调用静态方法,静态方法在内存中占有一定的内存空间。 在类中一旦定义了静态方法,那么就可以直接通过类名调用静态方法,并不需要实例化对象访问静态方法 实例 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace _9_StaticM... 阅读全文
posted @ 2012-01-18 14:44 David-散步的蜥蜴 阅读(457) 评论(0) 推荐(0)
摘要:前言探讨 我们说过构造函数是对类进行初始化的,我们希望刚出生的小猫有个姓名叫“咪咪”,当它叫的时候,能说“我的名字叫咪咪”,此时就要用到构造函数了,如下代码没有加绿色代码的部分,但是问题来了?如果我们事先没有给小猫起好名字,那么就创建不了实例了,这种现象很正常,有些父母刚生下孩子的时候,姓名没有起好是很正常的事情,就以下的代码没有加绿色代码的部分,你如果写Cat cat = new Cat();是会报“Cat方法没有采用0个参数的重载”的错误,原因就是必须要给小猫起名字,如果不需要起名字也要生下小猫,可以用方法重载实现 方法的重载 提供了创建同名的多个方法的能力,但是这些方法需要使用... 阅读全文
posted @ 2012-01-18 14:10 David-散步的蜥蜴 阅读(499) 评论(0) 推荐(0)
摘要:构造函数 构造函数又叫构造方法,其实就是对类进行初始化,构造函数与类同名,无返回值,也不需要void,在new时候调用 所有的类都有构造函数,如果你不写构造函数的话,系统默认生成空的构造函数,若你有自定义的构造函数,那么默认的构造函数就失效了,也就是说,由于你没有在Cat类中定义过构造函数,C#会生成一个空的构造函数Cat(),当然这个空的函数什么也不做,只是为了让能顺利的实例化而已 Cat cat =new Cat(),new后面的Cat()其实就是构造函数 什么时候用构造函数呢? 我们说过构造函数是对类进行初始化的,我们希望刚出生的小猫有个姓名叫“咪咪”,当它叫的时候,能说“... 阅读全文
posted @ 2012-01-14 10:11 David-散步的蜥蜴 阅读(463) 评论(0) 推荐(1)
摘要:ref参数 不仅可以通过值为方法传递参数,还可以通过引用为方法传递参数,若通过引用为方法传递参数,需要使用ref关键字 如果把一个参数传递给方法,且这个方法的输入参数前带有ref关键字,那么这个方法对参数所作的任何改变都会影响原来对象的值 注意 1:通过ref传递的引用参数,在函数成员调用之前,必须 阅读全文
posted @ 2012-01-13 11:00 David-散步的蜥蜴 阅读(805) 评论(0) 推荐(0)