日期:2014-05-17  浏览次数:20839 次

c#(三)

c#中的继承或实现都采用的是:

public class A:B

顺序是必须先继承后实现。

?

析构函数的申明方式:

class MyClass

{

?? ~MyClass(){

//执行对象回收前的动作。

}

}

类的析构函数由带有~前缀的类名来声明,当进行垃圾回收时,就执行析构函数中的代码,释放资源。在调用这个析构函数后,还将隐式的调用基类的析构函数。,包括System.Object根类中的Finalize()调用。

?

JAVA中采用的是super和this来调用父类或本类的构造函数。

而C#中是用base,this,而且是写在构造函数的旁边。

class MyClass :MyBaseClass

{

?? public MyClass():base(1)//调用父类的带一个int参数的构造函数

? {

?? }

?? public MyClass(int i)this()//调用本类的无参数的构造函数。

?? {

????

?? }

}

?

在C#程序中类似JAVA导入JAR包的步骤。

首先创建一个class library类型的项目。然后新建一个MyClass.cs的类。

然后新建一个工程项目,选择Project|Add Reference菜单项,单击Browse选项卡,然后选择class library工程目录下的xxx.dll文件。然后就可以在Solution Explorer窗口查找到。

然后通过:

using 项目的namespace

MyClass mc = new MyClass()

就可以引用到文件了。

同时也可以把XX.DLL文件复制到你的工程目录下。

?

STRUTS和CLASS的区别:

CLASS 是引用类型,在给对象赋值的时候,实际上是把带有一个指针的变量赋给了该指针所指向的对象。在实际代码中,指针是内存中的一个地址。在这种情况下,地址是内存中该对象所在的位置,在进行对象赋值的时候,实际上是复制了这个地址。

结构是值类型,包含的是结构本身,在结构赋值的时候,是将第一个结构中的所有信息复制到另一个结构中。

?

?

readonly修饰的字段的赋值地方:

1.构造函数中赋值。

2.在初始化的时候赋值。

public readonly int myInt=-1;

?

由static所修饰的属性或方法只能以类名。属性(方法名)来调用,不能通过该类的实例变量来调用。(跟JAVA不同)。

?

定义属性

当类中的一个属性为private的时候外部类是不可以访问的。

但可以通过指定get,set代码块来获得它的引用。

例如:

class MyClass

?private int intVal;

??????? public int Val
??????? {
??????????? get
??????????? {
??????????????? return intVal;
??????????? }
??????????? set
??????????? {
??????????????? if (value >= 0 && value <= 10)
??????????????? {
??????????????????? intVal = value;

??????????????? //value是一个关键字,等于类型与属性相同的一个值。

可理解为public void setIntVal(int value)中的VALUE。表示传入的变量。
??????????????? }
??????????????? else
??????????????? {
??????????????????? throw (new ArgumentOutOfRangeException("Val",value,"Val must be 0 and 10"));
??????????????? }
??????????? }
??????? }

?

如果外部类要访问该类的intVal.可以通过

MyClass mc = new MyClass();

mc.Val

来访问。

?

?

文件流的操作:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;

namespace FileReadAndWrite
{
??? class Program
??? {
??????? static void Main(string[] args)
??????? {
??????????? /*FileInfo aFile = new FileInfo(@"D:\Log.txt");
??????????? if (aFile.Exists)
??????????? {
??????????????? Console.WriteLine("文件已存在");
??????????? }
??????????? else
??????????? {
??????????????? aFile.Create();
??????????? }*/
??????????? /*
??????????? byte[] byData = null;
??????????? char[] charData = null;

??????????? try
??????????? {
??????????????? FileStream aFile = new FileStream(@"d:\儿子名字.txt", FileMode.Open);
??????????????? byData = new byte[aFile.Length];
??????????????? charData = new char[aFile.Length];
??????????????? aFile.Seek(0, SeekOrigin.Begin);
???????????????
??????????????? aFile.Read(byData, 0, (int)aFile.Length);
???????????
??????????
??????????? Decoder d = Encoding.Default.GetDecoder();
??????????? d.GetChars(byData,0,byData.Length,charData,0);

??????????? Console.WriteLine(charData);

??????????? //开始写到另外一个文件中
??????????? FileStream outFile = new FileStream(@"d:\test.txt",FileMode.Create);
??????????? outFile.Seek(0,SeekOrigin.Begin);
??????????? outFile.Write(byData,0,byData.Length);

???????????? }
???????????? catch (Exception e)
??????????? {
??????????????? //Console.WriteLine(e.Message);
??????????????? //Console.ReadKey();
??????????? }
???????????? * */
??????????? try
??????????? {
??????????????? FileStream outFile = new FileStream(@"d:\test.txt", FileMode.Create);
??????????????