01 2015 档案

摘要:一、C#数组删除元素在C#中,只能在动态数组ArrayList类中对数组执行删除元素的操作。因为动态数组是一个可以改变数组长度和元素个数的数据类型。示例:using System;using System.Collections.Generic;using System.Linq;using Sys... 阅读全文
posted @ 2015-01-22 14:57 melao2006 编辑
摘要:一、向数组添加元素在C#中,只能在动态数组ArrayList类中向数组添加元素。因为动态数组是一个可以改变数组长度和元素个数的数据类型。示例:using System;using System.Collections.Generic;using System.Linq;using System.Te... 阅读全文
posted @ 2015-01-22 14:56 melao2006 编辑
摘要:在C#中常用的数组排序的方法有:选择排序法、冒泡排序法、插入排序法和希尔排序法等。一、选择排序法using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ clas... 阅读全文
posted @ 2015-01-22 14:55 melao2006 编辑
摘要:在C#中,可以使用foreach语句来遍历数组的元素:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ class Program { static vo... 阅读全文
posted @ 2015-01-22 14:52 melao2006 编辑
摘要:在C#中,如果需要数组的长度和元素的个数随着程序的运行不断改变,就可以使用ArrayList类,该类是一个可以动态增减成员的数组。一、ArrayList类的常用属性和方法1. ArrayList类的常用属性2. ArrayList类的常用方法二、ArrayList类与Array类的区别?ArrayL... 阅读全文
posted @ 2015-01-22 14:51 melao2006 编辑
摘要:在C#中,可以将数组作为参数传递给方法,同时方法可以更改数组元素的值。一、将一维数组作为参数传递给方法using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ c... 阅读全文
posted @ 2015-01-22 14:49 melao2006 编辑
摘要:对于任意两个“引用类型”A和B,如果存在从A到B的隐式引用转换或显式引用转换,则也一定存在从数组类型A[R]到数组类型B[R]的相同的引用转换,其中R可以是任何给定的“秩说明符”,但是这两个数组类型必须使用相同的R,这种关系称为数组协方差。具体来说,数组协方差就是数组类型A[R]的值实际上可能是对数... 阅读全文
posted @ 2015-01-22 14:48 melao2006 编辑
摘要:在C#中,使用索引来访问数组元素。索引必须是一个整型值。在数组中,每一个维度的索引从0开始。一、访问一维数组元素int[] array = {1,2,3,4,5,6,7,8,9,10}; // 声明一维数组array[2] = 33; // 向数组的第3个元素写入值33int array1 = ar... 阅读全文
posted @ 2015-01-22 14:47 melao2006 编辑
摘要:C#的数组初始化是在声明数组时将初始值放在大括号({})之内。如果没有指定初始值,则数组成员将自动初始化为该数组类型的默认初始值。请阅读数组的属性。如果将数组声明为某类型的字段,则当实例化该类型时它将被设置为默认值null。一、一维数组的初始化1. 在声明数组时将其初始化。如:int[] array... 阅读全文
posted @ 2015-01-22 14:46 melao2006 编辑
摘要:在C#中,数组的声明就是对数组进行实例化。一、一维数组的声明1. 整型数组下面声明一个有5个整数元素的一维数组:int[] array = new int[5];上面的数组包含从array[0]到array[4]共计5个整数的元素。new运算符用于创建数组并将数组元素初始化为它们的默认值。在这个例子... 阅读全文
posted @ 2015-01-22 14:45 melao2006 编辑
摘要:一、数组的定义数组:是一种包含若干个变量的数据结构,这些变量可以通过索引进行访问。数组的元素:数组中的变量就称为数组的元素。元素类型:数组中的元素具有相同的数据类型,该数据类型就称为数组的元素类型。数组的维度:指的是和每个数组元素相关联的索引个数。一维数组:维度为1的数组称为一维数组。如:int[]... 阅读全文
posted @ 2015-01-22 14:35 melao2006 编辑
摘要:一、C#算术运算符C#语言的算术运算符主要用于数学计算中。二、示例using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ class Program { sta... 阅读全文
posted @ 2015-01-22 13:10 melao2006 编辑
摘要:下面介绍C#语言命名的9种规范:a) 类【规则1-1】使用Pascal规则命名类名,即首字母要大写。【规则1-2】使用能够反映类功能的名词或名词短语命名类。【规则1-3】不要使用“I”、“C”、“_”等特定含义前缀。【规则1-4】自定义异常类应以Exception结尾。【规则1-5】文件名要能反映类... 阅读全文
posted @ 2015-01-22 13:01 melao2006 编辑
摘要:1.读取文件输入流用于从外部源读取数据,在很多情况下,数据源可以是磁盘上的文件或网络的某些位置,任何可能发送数据的位置都可以是数据源,比如网络应用程序,web服务,甚至是控制台。StreamReader是一个通用类,可以用于任何流;StreamReader对象的创建方式非常类似于StreamWrit... 阅读全文
posted @ 2015-01-21 18:03 melao2006 编辑
摘要:用FileWriter来随机读取文件是个好主意,而用StreamWriter可以直接把字符串写入文件中,它处理重要的转换和向FileStream对像写入工作。创建StreamWriter有很多方法:FileStream aFile = new FileStream(“Log.txt”,FileMod... 阅读全文
posted @ 2015-01-21 18:02 melao2006 编辑
摘要:FileStream对象表示在磁盘或网络路径上指向文件的流。当类提供向文件读写字节的方法时,经常使用StreamReader或StreamWriter执行这些功能。这是因为FileStream类操作字节和字节数组,而Stream类操作字符数据。字符数据易于使用,但是有些操作比如随机文件访问,就必须由... 阅读全文
posted @ 2015-01-21 18:01 melao2006 编辑
摘要:FileInfo类不像File类,它没有静态方法,仅可用于实例化的对像。FileInfo对像表示在磁盘或网络位置的文件,注意它不是流,为了读写文件,必须创建Stream对像。fileInfo类提供了下面的关于基础性的文件的属性,这些属性可能用来更新文件。Attributes-----获取或设置当前文... 阅读全文
posted @ 2015-01-21 18:00 melao2006 编辑
摘要:File和Directory类作为实用类,File和Directory类都提供了许多方法,用于处理文件系统以及其中的文件和目录。这些是静态方法,涉及移动文件、查询和更新属性并创建FileStream对象。File类一些最常用的静态方法:Copy()------将文件复制到规定的位置Create()-... 阅读全文
posted @ 2015-01-21 17:59 melao2006 编辑
摘要:File------实用类,提供许多静态方法,用于移动、删除、和复制文件。Directory------实用类,提供许多静态方法,用于移动、删除和复制目录。Path------ 实用类,用于处理路径名称。FileInfo------表示磁盘上的物理文件,具有可以处理此文件的方法,要完成对文件的读写工... 阅读全文
posted @ 2015-01-21 17:59 melao2006 编辑
摘要:对文件的读写操作应该是最重要的文件操作,System.IO命名空间为我们提供了诸多文件读写操作类,在这里我要向大家介绍最常用也是最基本的StreamReader类和StreamWriter类。从这两个类的名称我们不难发现它们都是基于流的读写操作类。我们可以通过File类的OpenText()方法来获... 阅读全文
posted @ 2015-01-21 17:58 melao2006 编辑
摘要:我们在对文件进行读写操作之前必须打开文件,FileInfo类为我们提供了一个Open()方法,该方法包含了两个枚举类型值的参数,一个为FileMode枚举类型值,另一个为FileAccess枚举类型值。通过设定这两个参数值,我们可以对文件的访问模式和操作权限进行控制。下面的两个表格分别显示了File... 阅读全文
posted @ 2015-01-21 17:57 melao2006 编辑
摘要:通过FileInfo类,我们可以方便地创建出文件,并可以访问文件的属性同时还可以对文件进行打开文件、关闭文件、读写文件等基本的操作。下面的代码显示了如何创建一个文本文件并且去访问其创建时间、文件的绝对路径以及文件属性等文件信息,最后程序还给出了删除文件的方法。FileInfo fi = new Fi... 阅读全文
posted @ 2015-01-21 17:56 melao2006 编辑
摘要:运用DirectoryInfo类的对象我们可以轻松的实现对目录以及和目录中的文件相关的操作,假如你要获得某个目录F:\Pictures下的所有BMP文件,那么通过下面的代码就可以实现该功能。上面的代码中我们首先创建了一个DirectoryInfo对象,然后通过调用该对象的GetFiles方法获取目录... 阅读全文
posted @ 2015-01-21 17:55 melao2006 编辑
摘要:运用DirectoryInfo类创建子目录是非常容易的,你只要调用其中CreateSubdirectory()方法即可,演示代码如下。DirectoryInfo dir = new DirectoryInfo(@"F:\ Pictures");try{ dir.CreateSubdirectory(... 阅读全文
posted @ 2015-01-21 17:55 melao2006 编辑
摘要:DirectoryInfo类和FileInfo类的基类都是FileSystemInfo类,这个类是一个抽象类,也就是说你不可以实例化该类,只能通过继承产生其子类并实例化其子类。然而你却可以运用由该类定义的各种属性,下面的表格显示了该类已经定义了的各种属性。表2DirectoryInfo类提供了创建、... 阅读全文
posted @ 2015-01-21 17:54 melao2006 编辑
摘要:微软的.Net框架为我们提供了基于流的I/O操作方式,这样就大大简化了开发者的工作。因为我们可以对一系列的通用对象进行操作,而不必关心该I/O操作是和本机的文件有关还是和网络中的数据有关。.Net框架主要为我们提供了一个System.IO命名空间,该命名空间基本包含了所有和I/O操作相关的类。本文将... 阅读全文
posted @ 2015-01-21 17:53 melao2006 编辑
摘要:很多初学c#的朋友对于事件与接口感到迷惑不解,不明白它们之间的关系,下面我就用实例来简单的分析讲解一下。事件,用event修饰符来代表一个事件,我们要创建一个C#事件必须按以下顺序来扫行:1,创建或标识一个代表。比如下例中的public delegate void dele(); //声明代表,de... 阅读全文
posted @ 2015-01-21 17:52 melao2006 编辑
摘要:有时候我们需要表达一种抽象的东西,它是一些东西的概括,但我们又不能真正的看到它成为一个实体在我们眼前出现,为此面向对象的编程语言便有了抽象类的概念。C#作为一个面向对象的语言,必然也会引入抽象类这一概念。接口和抽象类使您可以创建组件交互的定义。通过接口,可以指定组件必须实现的方法,但不实际指定如何实... 阅读全文
posted @ 2015-01-21 17:51 melao2006 编辑
摘要:C#中不仅支持.Net 平台,而且支持COM平台。为了支持 COM和.Net,C# 包含一种称为属性的独特语言特性。一个属性实际上就是一个 C# 类,它通过修饰源代码来提供元信息。属性使 C# 能够支持特定的技术,如 COM 和 .Net,而不会干扰语言规范本身。C# 提供将COM接口转换为 C#接... 阅读全文
posted @ 2015-01-21 17:50 melao2006 编辑
摘要:1、显式实现接口成员为了实现接口,类可以定义显式接口成员执行体(Explicit interface member implementations)。显式接口成员执行体可以是一个方法、一个属性、一个事件或者是一个索引指示器的定义,定义与该成员对应的全权名应保持一致。using System ;int... 阅读全文
posted @ 2015-01-21 17:49 melao2006 编辑
摘要:对接口成员的访问对接口方法的调用和采用索引指示器访问的规则与类中的情况也是相同的。如果底层成员的命名与继承而来的高层成员一致,那么底层成员将覆盖同名的高层成员。但由于接口支持多继承,在多继承中,如果两个父接口含有同名的成员,这就产生了二义性(这也正是C#中取消了类的多继承机制的原因之一),这时需要进... 阅读全文
posted @ 2015-01-21 17:48 melao2006 编辑
摘要:接口可以包含一个和多个成员,这些成员可以是方法、属性、索引指示器和事件,但不能是常量、域、操作符、构造函数或析构函数,而且不能包含任何静态成员。接口定义创建新的定义空间,并且接口定义直 接包含的接口成员定义将新成员引入该定义空间。说明:1、接口的成员是从基接口继承的成员和由接口本身定义的成员。2、接... 阅读全文
posted @ 2015-01-21 17:47 melao2006 编辑
摘要:定义接口从技术上讲,接口是一组包含了函数型方法的数据结构。通过这组数据结构,客户代码可以调用组件对象的功能。定义接口的一般形式为:[attributes] [modifiers] interface identifier [:base-list] {interface-body}[;]说明:1、at... 阅读全文
posted @ 2015-01-21 17:46 melao2006 编辑
摘要:接口(interface)用来定义一种程序的协定。实现接口的类或者结构要与接口的定义严格一致。有了这个协定,就可以抛开编程语言的限制(理论上)。接口可以从多个基接口继承,而类或结构可以实现多个接口。接口可以包含方法、属性、事件和索引器。接口本身不提供它所定义的成员的实现。接口只指定实现该接口的类或接... 阅读全文
posted @ 2015-01-21 17:45 melao2006 编辑
摘要:开发基于.Net平台上的程序员是很难从本质上把Visual C#和ActiveX组件联起来,虽然在使用Visual C#开发应用程序时,有时为了快速开发或者由于.Net FrameWork SDK的不完整,还需要借助ActiveX。但即使如此,也很难把二者联系起来。其中的原因就是能够被Visual ... 阅读全文
posted @ 2015-01-21 17:44 melao2006 编辑
摘要:继承与访问修饰符访问修饰符是一些关键字,用于指定声明的成员或类型的可访问性。类的继承中有四个访问修饰符: public protected internal private。使用这些访问修饰符可指定下列五个可访问性级别: public protected internal internal prot... 阅读全文
posted @ 2015-01-21 17:43 melao2006 编辑
摘要:一些面向对象语言允许一个类从多个基类中继承,而另一些面向对象语言只允许从一个类继承,但可以随意从几个接口或纯抽象类中继承。只有C++支持多级继承,许多程序员对此褒贬不一。多级继承常会引起继承来的类之间的混乱,继承而来的方法往往没有唯一性,所以C#中类的继承只可以是一个,即子类只能派生于一个父类,而有... 阅读全文
posted @ 2015-01-21 17:42 melao2006 编辑
摘要:(1) 访问基类成员通过base 关键字访问基类的成员: 调用基类上已被其他方法重写的方法。 指定创建派生类实例时应调用的基类构造函数。 基类访问只能在构造函数、实例方法或实例属性访问器中进行。 从静态方法中使用 base 关键字是错误的。示例:下面程序中基类 Person 和派生类... 阅读全文
posted @ 2015-01-21 17:41 melao2006 编辑
摘要:1、继承是可传递的。如果C从B中派生,B又从A中派生,那么C不仅继承了B中声明的成员,同样也继承了A中的成员。Object 类作为所有类的基类。2、派生类应当是对基类的扩展。派生类可以添加新的成员,但不能除去已经继承的成员的定义。3、构造函数和析构函数不能被继承。除此以外的其它成员,不论对它们定义了... 阅读全文
posted @ 2015-01-21 17:40 melao2006 编辑
摘要:在对这个问题展开讨论之前,我们不妨先来问这么几个问题,以系统的了解我们今天要探究的主题。观者也许曾无数次的使用过诸如System.Console类或.NET类库中那些品种繁多的类。那么,我想问的是它们究竟源自何处?C#又是如何联系它们?有没有支持我们个性化扩展的机制或类型系统?又有哪些类型系统可供我... 阅读全文
posted @ 2015-01-21 17:39 melao2006 编辑
摘要:在程序中,难免要访问某个对象的私有成员。那么以前实现这类功能的方法有两种,第一种方法最简单,就是把成员访问符从“private”改为“public”即可;而另一个就是提供公有的成员访问函数来进行访问。那么现在用C#编写程序,就不再需要采用前面所说的两种方法了,而直接使用属性来完成。首先来看看三种方法... 阅读全文
posted @ 2015-01-21 17:38 melao2006 编辑
摘要:一、 引言C# 3.0中新的对象初始化器是一种简单的语法特征-借助于这种特征,对象的构建和初始化变得非常简单。假定你有一个类Student,它看起来有如下样子:public class Student{ public string firstName; public string lastName;... 阅读全文
posted @ 2015-01-21 17:37 melao2006 编辑
摘要:1、DateTime 数字型System.DateTime currentTime=new System.DateTime();1.1 取当前年月日时分秒currentTime=System.DateTime.Now;1.2 取当前年int 年=currentTime.Year;1.3 取当前月in... 阅读全文
posted @ 2015-01-21 17:36 melao2006 编辑
摘要:1. 你通常怎样用多态?假设我有一个类,里面有一个 PrintStatus 方法,用于打印实例的当前状态,我希望该类的派生类都带有一个 PrintStatus 方法,并且这些方法都用于打印其实例的当前状态。那么我会这样表达我的愿望:// Code #01class Base{ public virt... 阅读全文
posted @ 2015-01-21 17:35 melao2006 编辑
摘要:前面已经展示了一些在方法内部创建变量的例子。变量从定义了它的语句开始存在,同一个方法内的后续语句可以使用该变量。换言之,变量只能在创建了之后才能使用。方法执行完毕后,变量也会彻底消失。假如一个变量能在程序中的一个特定位置使用,就说明该变量具有那个位置的作用域。也就是说,一个变量的作用域(scope)... 阅读全文
posted @ 2015-01-21 17:34 melao2006 编辑
摘要:方法又称成员函数(Member Function),集中体现了类或对象的行为。方法同样分为静态方法和实例方法。静态方法只可以操作静态域,而实例方法既可以操作实例域,也可以操作静态域--虽然这不被推荐,但在某些特殊的情况下会显得很有用。方法也有如域一样的5种存取修饰符--public,protecte... 阅读全文
posted @ 2015-01-21 17:30 melao2006 编辑
摘要:范例说明上面的例子已不足以再进行下面的讲解了,我们来看一个新的范例,因为之前已经介绍了很多的内容,所以本节的进度会稍微快一些:假设我们有个高档的热水器,我们给它通上电,当水温超过95度的时候:1、扬声器会开始发出语音,告诉你水的温度;2、液晶屏也会改变水温的显示,来提示水已经快烧开了。现在我们需要写... 阅读全文
posted @ 2015-01-21 17:29 melao2006 编辑
摘要:一、C#关系运算符C#语言的关系运算符是对操作数的比较运算。二、示例using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ class Program { st... 阅读全文
posted @ 2015-01-21 17:27 melao2006 编辑
摘要:一、C#逻辑运算符C#语言的逻辑运算符是对变量的值、表达式的运算结果进行比较,基比较结果为True或False。二、示例using System;using System.Collections.Generic;using System.Linq;using System.Text;namespac... 阅读全文
posted @ 2015-01-21 17:26 melao2006 编辑
摘要:一、C#位运算符C#语言的位运算符可以对整型运算对象按位进行逻辑运算。二、提示1. 与运算符与运算符的运算规则如下:0 & 0 = 00 & 1 = 01 & 0 = 01 & 1 = 1例如:2的二进制表示: 0000001010的二进制表示:00001010-------------------... 阅读全文
posted @ 2015-01-21 17:25 melao2006 编辑
摘要:一、C#赋值运算符C#语言的赋值运算符用于将一个数据赋予一个变量、属性或者引用。数据可以是常量、变量或者表达式。1. 简单赋值“=”操作符被称为简单赋值操作符。在一个简单赋值中,右操作数必须为某种类型的表达式,且该类型必须可以隐式地转换成左操作数类型。该运算将右操作数的值赋给作为左操作数的变量、属性... 阅读全文
posted @ 2015-01-21 17:25 melao2006 编辑
摘要:一、C#条件运算符(?:)条件运算符(?:),有时也称为三元操作符“?:”。它是根据布尔型表达式的值返回?后面的两个值中的一个。如果条件为True,则计算第一个表达式并以它的计算结果为准;如果条件为False,则计算第二个表达式并以它的计算结果为准。例如:b ? x : y形式的条件表达式。首先计算... 阅读全文
posted @ 2015-01-21 17:24 melao2006 编辑
摘要:一、C#自减运算符(--)自减运算符(--)是将操作数减1。1. 前缀自减运算符前缀自减运算符是“先减1,后使用”。它的运算结果是操作数减1之后的值。例如:--x; // 前缀自减运算符2. 后缀自减运算符后缀自减运算符是“先使用,后减1”。它的运算结果是操作数减1之前的值。例如:x--; // 后... 阅读全文
posted @ 2015-01-21 17:23 melao2006 编辑
摘要:一、C#自增运算符(++)自增运算符(++)是将操作数加1。1. 前缀自增运算符前缀自增运算符是“先加1,后使用”。它的运算结果是操作数加1之后的值。例如:++x; // 前缀自增运算符2. 后缀自增运算符后缀自增运算符是“先使用,后加1”。它的运算结果是操作数加1之前的值。例如:x++; // 后... 阅读全文
posted @ 2015-01-21 17:23 melao2006 编辑
摘要:一、C# sizeof运算符sizeof运算符用于获取值类型的字节数。二、示例using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Test{ class Program... 阅读全文
posted @ 2015-01-21 17:22 melao2006 编辑
摘要:一、C# checked运算符checked运算符用于对整型算术运算和显式转换启用溢出检查。默认情况下,表达式产生的值如果超出了目标类型的范围,将会产生两种情况:?常数表达式将导致编译时错误。?变量表达式在运行时计算并将引发异常。二、提示如果我们通过编译器选项或者环境配置在全局范围内取消了溢出检查,... 阅读全文
posted @ 2015-01-21 17:21 melao2006 编辑
摘要:一、C# as运算符as运算符用于执行引用类型的显式类型转换。请阅读C#数据类型。as运算符可以用下面的格式表示:expression as type?expression:引用类型的表达式。?type:引用类型。例如:string str = someObject as string;if (st... 阅读全文
posted @ 2015-01-21 17:20 melao2006 编辑
摘要:一、C# new运算符1. 用于创建对象和调用构造函数。例如:Class_Test obj = New Class_Test();2. 用于为值类型调用默认的构造函数。例如:int myInt = New int();上述语句中,myInt初始化为0,它是int类型的默认值。该语句的效果等同于:in... 阅读全文
posted @ 2015-01-21 17:19 melao2006 编辑
摘要:一、C#运算符重载1. C#运算符重载运算符重载是指允许用户使用自己定义的类型编写运算符号,同时还允许用户定义的类型与预定义的类型具有相同的功能。重载运算符的目的是方便我们自己的类或结构使用。所有运算符重载均为类或结构的静态方法。因此,在C#语言中,允许用户定义的类型通过使用operator关键字定... 阅读全文
posted @ 2015-01-21 17:18 melao2006 编辑
摘要:一、C#运算符优先级C#运算符也叫做C#操作符。当一个表达式包含多个运算符时,就会出现运算符的运算次序问题。在C#中,使用运算符的优先级来解决运算的次序问题。运算符的优先级控制着单个运算符求值的顺序。每一个运算符都有它自己一定的优先级,决定了它在表达式中的运算次序。在同一表达式中,先执行优先级高的运... 阅读全文
posted @ 2015-01-21 17:17 melao2006 编辑
摘要:一、C# is运算符is运算符用于检查对象是否与给定类型兼容(兼容表示对象是该类型,或者派生于该类型)。is运算符用来检查对象(变量)是否属于某种数据类型,如int、string、bool、double、class等。可以在类型安全转换之前进行判断之用。is运算符的规则如下:?如果对象与给定类型兼容... 阅读全文
posted @ 2015-01-21 17:16 melao2006 编辑
摘要:一、C# unchecked运算符unchecked运算符用于取消整型算术运算和转换的溢出检查。二、提示默认情况下,都是unchecked选项。因此,只有在需要把几个未检查的代码行放在一个明确标记为checked的代码块中以后,才需要显式使用unchecked关键字。三、示例using System... 阅读全文
posted @ 2015-01-21 17:15 melao2006 编辑
摘要:C#代码的外观和操作方式与C++和Java非常类似。初看起来,其语法可能比较混乱,不像书面英语和其他语言。但是,在C#编程中,使用的样式是比较清晰的,不用花太多的力气就可以编写出可读性很强的代码。与其他语言的编译器不同,无论代码中是否有空格、回车符或tab字符(这些字符统称为空白字符),C#编译器都... 阅读全文
posted @ 2015-01-21 17:10 melao2006 编辑
摘要:在体验C#的锐利之前,关乎语言基本知识的掌握是必不可少的一环。由于C#基本语言很多源自C/C++,在这里对那些和C/C++类似的地方仅作简单介绍,我们将体验专注于那些区别于传统C/C++的关键的语言基础知识。数据类型C#语言的数据类型主要分为两类:值类型和引用类型。另外一种数据类型"指针"是为uns... 阅读全文
posted @ 2015-01-21 17:09 melao2006 编辑
摘要:变量表示存储位置,变量必须有确定的数据类型。C#的类型安全的含义之一就是确保变量的存储位置容纳着合适的类型。可以将C#中的变量分为静态变量,实例变量,传值参数,引用参数,输出参数,数组参数和本地变量共七种。本地变量则是在方法体内的临时变量。静态变量和实例变量主要是针对类或结构内的数据成员(又叫域)而... 阅读全文
posted @ 2015-01-21 17:08 melao2006 编辑
摘要:C#保留了C++所有的操作符,其中指针操作符(*和->)与引用操作符(&)需要有unsafe的上下文。C#摈弃了范围辨析操作符(::),一律改为单点操作符(.)。我们不再阐述那些保留的C++的操作符,这里主要介绍C#引入的具有特殊意义的几个操作符:as,is,new, typeof,sizeof,s... 阅读全文
posted @ 2015-01-21 17:07 melao2006 编辑
摘要:C#中有两种类型:值类型(value type)和引用类型(reference type)。值类型变量直接包括它们的数据,而引用类型变量存储的是它们的数据引用,后者被认为是对象。对于引用类型,有可能两个变量引用相同的对象,因此对其中一个变量的操作可能影响另一个对象引用的对象。对于值类型,每个变量都有... 阅读全文
posted @ 2015-01-21 17:06 melao2006 编辑
摘要:C#采用命名空间(namespace)来组织程序。命名空间可以嵌套。using指示符可以用来简化命名空间类型的引用。using指示符有两种用法。"using System;"语句可以使我们用简短的类型名"Console"来代替类型"System.Console"。"using Output = Sy... 阅读全文
posted @ 2015-01-21 17:06 melao2006 编辑
摘要:随着C#语言最新标准的出炉,现在它也提供了对可空类型的支持。这个小变化将会在处理那些包括可选项的数据库记录时非常有用。当然在其他地方,它也是非常有用的。简单说来,可空数据类型就是包含了所定义的数据类型或者值的空(null)的类型。C#的ECMA-334标准提供了对所有C#值类型的可空版本的描述。定义... 阅读全文
posted @ 2015-01-21 17:05 melao2006 编辑
摘要:在C#中定义常量的方式有两种,一种叫做静态常量(Compile-time constant),另一种叫做动态常量(Runtime constant)。前者用“const”来定义,后者用“readonly”来定义。对于静态常量(Compile-time constant),它的书写方式如下:publi... 阅读全文
posted @ 2015-01-21 17:04 melao2006 编辑
摘要:表达式(expression)由操作数(operand)和运算符(operator)构成。表达式的运算符标明在操作数上运用了哪种操作。运算符的例子包括+、-、*、/和new。操作数的例子包括字面值、字段、局部变量和表达式。当表达式包括多个运算符时,运算符的优先级(precedence)控制各个运算符... 阅读全文
posted @ 2015-01-21 17:03 melao2006 编辑
摘要:与现实世界不同,在编程的世界中,每一件事情要么黑,要么白;要么对,要么错;要么是真的,要么是假的。例如,假定你创建一个名为x的整数变量,把值99赋给x,然后问:“x中包含了值99吗?”答案显然是肯定的。如果你问:“x小于10吗?”答案显然是否定的。这些正是布尔(Boolean)表达式的例子。一个布尔... 阅读全文
posted @ 2015-01-21 17:02 melao2006 编辑
摘要:布尔操作符(Boolean operator)是求值结果要么为true,要么为false的一种操作符。C#提供了几个非常有用的布尔操作符,其中最简单的是NOT(求反)操作符,它使用感叹号(!)来表示。!操作符求一个布尔值的反值。在上例中,假如变量areYouReady的值为true,那么表达式!ar... 阅读全文
posted @ 2015-01-21 17:01 melao2006 编辑
摘要:前面讲过如何使用算术操作符来创建新值。例如,以下语句使用操作符+来创建比变量answer大42的一个值,新值将写入控制台:Console.WriteLine(answer + 42);前面还讲过如何使用赋值语句来更改一个变量的值。以下语句使用赋值操作符将answer的值变成42:answer = 4... 阅读全文
posted @ 2015-01-21 17:00 melao2006 编辑
摘要:一、C# while语句while语句是用于重复执行程序代码的语句。语法格式如下:while(boolean-expression){ embedded-statement}当boolean-expression为True时,将重复执行循环体中的程序语句embedded-statement,为Fal... 阅读全文
posted @ 2015-01-21 16:59 melao2006 编辑
摘要:一、C# do while语句do while语句是先执行一次循环体,然后再判断是否需要重复执行循环体的循环控制语句。语法格式如下:do{ embedded-statement}while(boolean-expression);先执行一次循环体语句embedded-statement,然后再对bo... 阅读全文
posted @ 2015-01-21 16:58 melao2006 编辑
摘要:一、C# if语句if语句根据条件判断代码该执行哪一个分支。if语句有两个或两个以上的分支供代码选择,但是每次只能执行一个分支。1. 基本if语句语法格式如下:if(expression){ statement;}或if(expression){ statement1;}else{ statemen... 阅读全文
posted @ 2015-01-21 16:57 melao2006 编辑
摘要:一、C# switch语句if语句每次判断只能实现两种选择,而switch语句每次判断可以实现多种选择。基本语法格式如下:switch(controlling-expression){ case constant-expression: {语句块} 跳转语句(如break、return、goto) ... 阅读全文
posted @ 2015-01-21 16:56 melao2006 编辑
摘要:一、C# for语句for语句是C#语言中使用频率最高的循环语句。1. for语句语法格式如下:for(initializer; condition; iterator){ embedded-statement}initializer、condition和iterator这三项都是可选项。?init... 阅读全文
posted @ 2015-01-21 16:55 melao2006 编辑
摘要:一、C# foreach语句foreach语句能够对实现Ienumerable接口的容器进行遍历,并提供一个枚举器来实现Ienumerable接口。foreach语句为数组或对象集合中的各个元素执行一个嵌入语句组。另外,它还可用于循环访问集合以获取所需信息,但不能应用于更改集合内容以避免产生不可预知... 阅读全文
posted @ 2015-01-21 16:54 melao2006 编辑
摘要:一、C# break语句break语句用于终止它后面的所有循环语句,使控制流程跳转到break语句所在层的外面,以便结束本层的所有循环。如果有多个循环语句进行嵌套,break语句则会跳到它所在层的外层。语法格式如下:break;二、示例using System;using System.Collec... 阅读全文
posted @ 2015-01-21 16:53 melao2006 编辑
摘要:一、C# continue语句continue语句在循环体中结束本次循环,而重新开始下一次循环。语法格式如下:continue;二、示例using System;using System.Collections.Generic;using System.Linq;using System.Text;... 阅读全文
posted @ 2015-01-21 16:52 melao2006 编辑
摘要:一、C# goto语句goto语句把控制交给由标记标识符命名的语句。语法格式如下:goto label;......label: ...在C#中,任何语句都可以被标记。语句标记后紧跟一个冒号,一个标记标识符。常用的格式如下:goto identifier; // 标签goto case consta... 阅读全文
posted @ 2015-01-21 16:51 melao2006 编辑
摘要:一、C# return语句return语句用于终止它出现在其中的方法的执行,并将控制返回给调用方法。语法格式如下:return ...;return语句还可以返回一个可选值。如果方法为void类型,则可以省略return语句。二、示例using System;using System.Collect... 阅读全文
posted @ 2015-01-21 16:50 melao2006 编辑
摘要:C#流程控制语句一、选择语句当程序中需要进行两个或两个以上的选择时,可以根据条件的判断来选择将要执行的一组语句。?if语句?switch语句二、循环语句循环语句是对一个程序模块进行的重复操作。?while语句?do while语句?for语句?foreach语句三、跳转语句跳转语句用来把程序的执行重... 阅读全文
posted @ 2015-01-21 16:49 melao2006 编辑
摘要:C#注释语句注释就是在程序中标记、说明某个程序段的作用。注释语句不会被执行。一、单行注释// 这是一行注释二、多行注释/* 这是多行注释 第一行 第二行 ......*/三、技巧在C#中如果注释按照一定的XML格式书写,那么在程序被编译时,可以直接生成帮助文档。 阅读全文
posted @ 2015-01-21 16:48 melao2006 编辑
摘要:“面向对象=对象+类+继承+通信”。如果一个软件系统使用了这样四个概念进行设计和实现,我们就可以认为这个软件系统是面向对象的。一、一切都是对象1. 对象概述对象可以表示几乎所有的实物和概念。比如:一个人、一件事、一辆汽车、一本书、一个文件、一台计算机、一个快捷键、一种语言、一个图形、一种管理方式等都... 阅读全文
posted @ 2015-01-21 16:47 melao2006 编辑
摘要:一、C#中类的声明在C#中必须先声明类,然后才能在程序中使用。类的声明格式如下:[类的属性] [访问修饰符] class 类名称 [: 父类名]{ [成员修饰符] 类的成员变量或者成员函数}?类的属性:类的属性集。?访问修饰符:说明类的特性。类的修饰符可以是以下几种之一或者是它们的组合:?new:只... 阅读全文
posted @ 2015-01-21 16:46 melao2006 编辑
摘要:一、C#中类的成员1. 类的成员类中的数据和函数都称为类的成员。类的成员可以分为两类:?类本身所声明的。?从基类中继承来的。如果在类声明中没有指定基类,则该类将继承System.Object类的所有成员。2. 成员的类别类的成员有以下几种类别:注:C#中的类成员可以是任意类型,包括数组和集合。3. ... 阅读全文
posted @ 2015-01-21 16:45 melao2006 编辑
摘要:一、this保留字this保留字一般只在构造函数、类的方法和类的实例中使用。它有以下含义:?在类的构造函数中出现的this,则作为一个值类型,表示对正在构造的对象本身的引用。?在类的方法中出现的this,则作为一个值类型,表示对调用该方法的对象的引用。?在结构的构造函数中出现的this,则作为一个变... 阅读全文
posted @ 2015-01-21 16:44 melao2006 编辑
摘要:一、C#静态成员和非静态成员1. C#静态成员和非静态成员当类中的某个成员使用static修饰符时,就会被声明为静态成员。类中的成员要么是静态成员,要么是非静态成员。一般情况下,静态成员属于整个类所有,被该类的所有实例所共享。而非静态成员则属于类的实例——对象所有,只被该实例所共享。因此,对于类的静... 阅读全文
posted @ 2015-01-21 16:43 melao2006 编辑
摘要:一、C#类的实例类的实例其实就是类的对象。定义类之后即可声明类的对象,声明对象之后便可以访问对象的成员了。语法格式如下:类名 对象名; // 声明对象对象名 = new 类名(); // 使用new关键字对对象进行实例化操作或者类名 对象名 = new 类名();关键字new的作用是调用一个构造函数... 阅读全文
posted @ 2015-01-21 16:42 melao2006 编辑
摘要:一、构造函数构造函数用于执行类的实例的初始化。每个类都有自己的构造函数,如果我们声明了构造函数,系统就会执行我们声明好的构造函数;如果我们没有声明构造函数,编译器就会自动为我们提供一个默认的构造函数。在访问一个类的时候,系统将首先执行构造函数中的语句。实际上,执行构造函数时都隐式地调用了系统提供的默... 阅读全文
posted @ 2015-01-21 16:41 melao2006 编辑
摘要:一、C#析构函数1. 析构函数的定义与注意的问题析构函数用于释放被占用的系统资源。析构函数的名字由符号“~”加类名组成。使用析构函数时,应该注意下面的问题:?只能在类中使用析构函数,不能在结构中使用析构函数。?一个类只能有一个析构函数。?不能继承或重载析构函数。?析构函数只能被自动调用。?析构函数没... 阅读全文
posted @ 2015-01-21 16:40 melao2006 编辑
摘要:常量就是其值固定不变的量,值类型或引用类型都可以作为常量。在C#中,常量可以分为静态常量和动态常量。一、静态常量声明静态常量的语法格式如下:修饰符 const 数据类型 常量名 = 常量值;?修饰符:可以是public、protected、internal、private等。?const:声明静态常... 阅读全文
posted @ 2015-01-21 16:39 melao2006 编辑
摘要:属性是对现实世界中实例特征的抽象,它提供对类或对象性质的访问。例如人的姓名、年龄、体重和身高等都可以作为属性。类的属性所描述的是状态信息,在类的某个实例中属性的值表示该对象的状态值。在C#中,通过访问器来访问属性,使用get访问器和set访问器对属性的值进行读写。一、属性的声明下面的代码是一个完整的... 阅读全文
posted @ 2015-01-21 16:38 melao2006 编辑
摘要:三、方法重载方法重载是指使用相同的方法名,利用不同的参数区分调用不同的方法。方法重载的条件:?在同一个类中。?方法名相同。?参数列表不同。是指参数的数量、类型和顺序这三种属性有任意一种属性不同。只要满足了方法重载的条件,就可以定义不同的方法。如:public int max(int x, int y... 阅读全文
posted @ 2015-01-21 16:37 melao2006 编辑
摘要:二、方法中的参数类型1. 值参数值参数是指不带修饰符只带数据类型的形参。值参数在使用值向方法传递参数时,编译程序会把实参的值做一份拷贝,并且将此拷贝传递给该方法,被调用的方法不会修改内存中实参的值。调用该方法时,系统会为每一个值类型的形参分配一个新的内存空间,然后将对应的实参的表达式运算的值复制到该... 阅读全文
posted @ 2015-01-21 16:36 melao2006 编辑
摘要:一、声明方法方法是类中用于执行计算或其它行为的成员。方法可以分为:?静态方法:可以通过类进行访问。?实例方法:可以通过类的对象进行访问。1. C#方法的声明声明方法的语法格式如下:访问修饰符 返回值类型 方法名称(形参列表){ 语句序列}?访问修饰符:包括存取修饰符,如private、protect... 阅读全文
posted @ 2015-01-21 16:35 melao2006 编辑
摘要:一、C#索引器C#的索引器是一种特殊的类成员,它允许类和结构的实例按照与数组相同的方式进行索引,索引器的访问器可以使用参数,被称为有参属性。当一个类包含了数组和集合成员时,索引器将大大简化对数组或集合成员的存取操作。1. 索引器的声明声明索引器的语法格式如下:修饰符 数据类型 this[索引类型名称... 阅读全文
posted @ 2015-01-21 16:33 melao2006 编辑
摘要:一、C#继承简介1. 类的层次结构下面是一个类的层次结构图:上图反映了鱼类的派生关系,其中最高层的实体往往具有最一般最普遍的特征,越下层的实体就越具体,并且下层包含了上层的特征。如果将上层的实体比作基类,那么下层的实体就可以比作派生类,而基类也可以称为派生类的父类。继承就是在类之间建立一种相交关系,... 阅读全文
posted @ 2015-01-21 16:32 melao2006 编辑
摘要:一、在派生类中调用基类成员在C#的派生类中,我们可以使用base关键字调用基类中的公有或者受保护成员。这些成员只能是构造函数、实例方法或者实例属性。base关键字调用基类成员的语法格式如下:base . identifier或base[expression-list]注意:?base关键字不能用在派... 阅读全文
posted @ 2015-01-21 16:31 melao2006 编辑
摘要:C#继承的多态性当一个类A派生出新类B时,这个基类A在新类B中可以表现为不同的类型:用作它自己的类型、基类型,或者在实现接口时用作接口类型,我们将这种情况称为多态性。C#中的每种类型都是多态性的,都可以用作它们自己的类型或者用作Object实例,因为所有的类型都自动将Object当做基类型。基类的设... 阅读全文
posted @ 2015-01-21 16:30 melao2006 编辑
摘要:一、抽象类1. 抽象类的定义使用abstract修饰符修饰的类只能用作基类,该类就称为抽象类。2. 抽象类的作用抽象类本身不能产生实例对象。3. 抽象类与非抽象类的区别?抽象类只能作为其它类的基类,它不能被直接实例化,也不能使用new运算符。抽象类如果含有抽象的变量和值,则它们要么是null类型,要... 阅读全文
posted @ 2015-01-21 16:28 melao2006 编辑
摘要:C#密封类一、密封类1. 密封类的定义如果我们不希望自己编写的类被继承;如果有的类已经没有再被继承的必要,这时,我们可以使用sealed修饰符在类中进行声明,以达到该类不能派生其它类的目的,该类就被称为密封类。2. 密封类与抽象类密封类不能同时又是抽象类,因为密封类不能用作基类、也不能被继承,而抽象... 阅读全文
posted @ 2015-01-21 16:27 melao2006 编辑
摘要:C#使用ref和out传递数组一、使用ref参数传递数组数组类型的ref参数必须由调用方明确赋值。因此,接受方不需要明确赋值。接受方数组类型的ref参数能够修改调用方数组类型的结果。可以将接受方的数组赋以null值,或将其初始化为另一个数组。请阅读引用型参数。示例:在调用方法(Main方法)中初始化... 阅读全文
posted @ 2015-01-21 16:16 melao2006 编辑
摘要:C#语言概述一、.NET Framework.NET Framework是Windows的一个不可或缺的组件,它包括公共语言运行库(CLR)和类库两部分。CLR是Microsoft的公共语言基础结构(CLI)的商业实现。CLI是一种国际标准,是用于创建语言和库在其中无缝协同工作的执行和开发环境的基础... 阅读全文
posted @ 2015-01-21 16:14 melao2006 编辑
摘要:一、编写第一个C#程序——Hello World1. 启动Microsoft Visual Studio 2010。2. 点击“文件”菜单,选择“新建”项,在弹出的子菜单中选择“项目”命令。3. 弹出“新建项目”对话框。4. 在“最近的模板”下面点击“Visual C#”项,在中间的“模板”窗口中选... 阅读全文
posted @ 2015-01-21 16:10 melao2006 编辑
摘要:typeof运算符typeof运算符用于获取类型的System.Type对象。typeof(x)中的x,必须是具体的类名、类型名称等,不可以是变量名称。typeof运算符不能重载。using System;using System.Collections.Generic;using System.L... 阅读全文
posted @ 2015-01-21 15:49 melao2006 编辑
摘要:sizeof运算符用于获取非托管类型的大小(以字节为单位)。 非托管类型包括下表列出的内置类型以及以下类型:枚举类型指针类型用户定义的结构,不包含任何属于引用类型的字段或属性下面的示例演示如何检索 int 的大小:C#// Constant value 4:int intSize = sizeof(... 阅读全文
posted @ 2015-01-21 10:33 melao2006 编辑
摘要:C#接口定义 C#不支持多重继承,但是客观世界出现多重继承的情况又比较多。为了避免传统的多重继承给程序带来的复杂性等问题,C# 提出了接口的概念。通过接口可以实现多重继承的功能。 继承该接口的类或结构要与接口的定义严格一致。接口描述可属于任何类或结构的一组相关行为。接口可由方法、属性、事件、索引器或... 阅读全文
posted @ 2015-01-20 14:54 melao2006 编辑
摘要:如何理解委托?答:有点类似于指针,但他是类型安全的,通过对于方法特征和返回类型的声明,封装了具有相同特征和返回类型的方法。不关心该方法是什么类型的对象,甚至是静态的还是实例的。委托可以连接在一起,可以对一个事件调用多个方法。 阅读全文
posted @ 2015-01-19 16:45 melao2006 编辑
摘要:值类型和引用类型的区别?答:值类型直接存储其值,引用类型存储对值的引用。值类型存储在堆栈中,而引用类型存储在托管堆上。值类型包括:简单类型、结构类型、枚举类型;引用类型包括:类、数组、接口、委托、字符串、数组。 阅读全文
posted @ 2015-01-19 16:44 melao2006 编辑
摘要:重载方法、虚拟方法的区别?答:重载方法:是指使用相同的方法名,但指定不同的参数(个数,类型)。 虚拟方法:在基类中对要实现多态性的方法加上virtual关键字,在派生类中的同名方法前面,加上override关键字修饰,并改写该方法的代码。 阅读全文
posted @ 2015-01-19 16:38 melao2006 编辑
摘要:ADO.net中常用的对象有哪些?分别描述一下。答:Connection 数据库连接对像 Command 数据库命令 DataReader 数据读取器 DataSet 数据集DataReader与Dataset有什么区别? 答:一个是只能向前的只读游标,一个是内存中的表。 阅读全文
posted @ 2015-01-19 16:16 melao2006 编辑
摘要:什么是虚函数?什么是抽像函数? 答:虚函数:可由子类继承并重写的函数。 抽像函数:规定其非虚子类必须实现的函数,必须被重写。 阅读全文
posted @ 2015-01-19 16:11 melao2006 编辑
摘要:sleep() 和 wait() 有什么区别?答:sleep()方法是将当前线程挂起指定的时间。 wait()释放对象上的锁并阻塞当前线程,直到它重新获取该锁。 阅读全文
posted @ 2015-01-19 16:05 melao2006 编辑
摘要:什么是强类型系统? 答:变量必须先声明才能使用。而在弱类型的语言中,变量可以不声明就使用,RTTI:类型识别系统。 阅读全文
posted @ 2015-01-19 16:00 melao2006 编辑
摘要:什么是受管制的代码? 答:unsafe:非托管代码。不经过CLR运行。 阅读全文
posted @ 2015-01-19 15:59 melao2006 编辑
摘要:什么是装箱和拆箱?答:从值类型接口转换到引用类型装箱。从引用类型转换到值类型拆箱。 阅读全文
posted @ 2015-01-19 15:55 melao2006 编辑
摘要:CTS、CLS、CLR分别作何解释? 答:CTS:通用类型系统。CLS:通用语言规范。CLR:公共语言运行库。 阅读全文
posted @ 2015-01-19 15:53 melao2006 编辑
摘要:描述一下C#中索引器的实现过程,是否只能根据数字进行索引? 答:索引器是一种特殊的类成员,它能够让对象以类似数组的方式来存取, 使程序看起来更为直观,更容易编写,可以用任意类型。 阅读全文
posted @ 2015-01-19 15:48 melao2006 编辑
摘要:重载与覆盖的区别?答:1、方法的覆盖是子类和父类之间的关系,是垂直关系;方法的重载是同一个类中方法之间的关系,是水平关系 2、覆盖只能由一个方法,或只能由一对方法产生关系;方法的重载是多个方法之间的关系。 3、覆盖要求参数列表相同;重载要求参数列表不同。 4、覆盖关系中,调用那个方法体,是根据... 阅读全文
posted @ 2015-01-19 15:38 melao2006 编辑
摘要:C#中property与attribute的区别?答:attribute:自定义属性的基类;property:类中的属性 阅读全文
posted @ 2015-01-19 15:34 melao2006 编辑
摘要:C#可否对内存进行直接的操作?答:C#可以直接对内存进行操作。但是默认情况下,为了保持类型安全,C#不支持指针运算。不过,通过使用unsafe关键字,可以定义可使用指针的不安全上下文。 阅读全文
posted @ 2015-01-19 15:33 melao2006 编辑
摘要:在c#中using和new这两个关键字有什么意义?答:using 引入名称空间或者使用非托管资源, new 新建实例或者隐藏基类方法 阅读全文
posted @ 2015-01-19 15:24 melao2006 编辑
摘要:成员变量和成员函数前加static的作用?答:它们被称为常成员变量和常成员函数,又称为类成员变量和类成员函数。分别用来反映类的状态。比如类成员变量可以用来统计类实例的数量,类成员函数负责这种统计的动作。 阅读全文
posted @ 2015-01-19 15:23 melao2006 编辑
摘要:堆和栈的区别?答: 栈:由编译器自动分配、释放。在函数体中定义的变量通常在栈上。 堆:一般由程序员分配释放。用new、malloc等分配内存函数分配得到的就是在堆上栈是编译期间就分配好的内存空间,因此你的代码中必须就栈的大小有明确的定义;堆是程序运行期间动态分配的内存空间,你可以根据程序的运行情况确... 阅读全文
posted @ 2015-01-19 15:14 melao2006 编辑
摘要:进程和线程的区别?答:进程是系统进行资源分配和调度的单位;线程是CPU调度和分派的单位,一个进程可以有多个线程,这些线程共享这个进程的资源。答:线程(Thread)与进程(Process)二者都定义了某种边界,不同的是进程定义的是应用程序与应用程序之间的边界,不同的进程之间不能共享代码和数据空间,而... 阅读全文
posted @ 2015-01-19 15:12 melao2006 编辑
摘要:abstract class和interface有什么区别?答: 声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,其类型是一个抽... 阅读全文
posted @ 2015-01-19 15:00 melao2006 编辑
摘要:启动一个线程是用run()还是start()? 答:启动一个线程是调用start()方法,使线程所代表的虚拟处理机处于可运行状态,这意味着它可以由JVM调度并执行。这并不意味着线程就会立即运行。run()方法可以产生必须退出的标志来停止一个线程。 阅读全文
posted @ 2015-01-19 14:58 melao2006 编辑
摘要:接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口。抽象类可以实现(implements)接口,抽象类是否可继承实体类,但前提是实体类必须有明确的构造函数。 阅读全文
posted @ 2015-01-19 14:56 melao2006 编辑
摘要:GC是什么? 为什么要有GC?GC是垃圾收集器。程序员不用担心内存管理,因为垃圾收集器会自动进行管理。要请求垃圾收集,可以调用下面的方法之一: System.gc() Runtime.getRuntime().gc() 阅读全文
posted @ 2015-01-19 14:50 melao2006 编辑
摘要:C#面向对象的编程语言具三个特性:有封装性、继承性、多态性 。 阅读全文
posted @ 2015-01-19 14:44 melao2006 编辑
摘要:override与重载的区别override 与重载的区别,重载是方法的名称相同。参数或参数类型不同,进行多次重载以适应不同的需要 Override 是进行基类中函数的重写。 阅读全文
posted @ 2015-01-19 14:39 melao2006 编辑
摘要:C#中的委托是什么?委托可以把一个方法作为参数代入另一个方法。 委托可以理解为指向一个函数的引用。事件是不是一种委托?事件是一种特殊的委托。 阅读全文
posted @ 2015-01-19 14:32 melao2006 编辑
摘要:简述 private、 protected、 public、 internal 修饰符的访问权限。 private : 私有成员, 在该类的内部才可以访问。 protected : 保护成员,该类内部和继承类中可以访问。 public : 公共成员,完全公开,没有访问限制。 internal:... 阅读全文
posted @ 2015-01-19 14:20 melao2006 编辑