关于C#.net的四个操作技巧

时间:2022-08-08 07:27:38

关于C#.net的四个操作技巧

摘要: Visual C#.net是Visual Studio系列中的最新成员。本文列举了C#.net编程中的几个常用操作技巧。

关键词: C#.net 编程操作技巧

Visual C#.省略编程中总结的几点技巧。

一、使用属性代替原始数据

因为属性是语言本身的元素,所以我们在声明数据元素时,它的作用域等级没有必要大于“private”。因为代码本身会把属性看成数据元素,我们并没有失去使用简单数据类型的便利性。相反,它会使代码更加灵活、功能更加强大。属性使数据元素封装性更好,它可以使用“lazy evaluation”来返回数据。lazy evaluation的意思是当用户请求时才计算它的值,而不是一直保留着它。属性可以是“virtual”,也可以是“abstract”。我们也可以在接口中定义属性。对于维护方面的因素我们应当注意:尽管操作两者的方法是一样的,但是我们把一个数据元素变成属性,那么原先客户端的程序便不能访问服务端的新版本程序了。实际上对于在Web service中想实现序列化的值,我们可以把它们变成属性来使用:

private int TheMonth = 0;

public int Month

{ get { return TheMonth; }

set { TheMonth = value; } }

我们这样简单地通过属性就可以使所有数据元素私有化。

二、尽量使用接口来编程

C#.省略的哪个类。然而,在这种情况下如果我们用C#.net支持的接口而不是用它的类来编程时,代码会变得更加稳定、可用性会更高。如一段代码从一个可为任何对象的数组中加载ListBox,这段代码被限定为只能使用数组。假设过些时候我们发现那些对象存在数据库中,或别的集合中,那么,我们就需要修改程序来使用不同的集合类型。如果用ICollection接口来写那段程序,我们就不用修改那段程序了,因为对于任何实现ICollection接口的类型它都能很好地工作:ICollection被数组和所有System.省略类同样支持ICollection接口,用接口写的这个函数不用修改就可以在许多情况中使用。

三、使用“delegate”类型设计自定义事件

在编程中,除了“Method”和“Property”,任何“Class”都可以有自己的事件(Event)。定义和使用自定义事件的步骤如下:

(1)在“Class”之外定义一个“delegate”类型,用于确定事件程序的接口。

(2)在“Class”内部声明一个“public event”变量,类型为上一步骤定义的“delegate”类型。

(3)在某个“Method”或者“Property”内部某处,触发事件。

(4)Client程序中使用“+=”操作符指定事件处理程序。

例子:

public delegate void MyEventHandler(object sender, long lineNumber) ; // 定义Delegate类型,约束事件程序的参数

public class DataImports

{

// 定义新事件NewLineRead

public event MyEventHandler NewLineRead ;

public void ImportData()

{

long i = 0 ; // 事件参数

while()

{

i++ ;

// 触发事件

if( NewLineRead != null ) NewLineRead(this, i);

//...

}

//...

}

//...

}

// 以下为Client代码

private void CallMethod()

{

// 声明Class变量,不需要WithEvents

private DataImports _da = null;

// 指定事件处理程序

_da.NewLineRead += new MyEventHandler(this.DA_EnterNewLine) ;

// 调用Class方法,途中会触发事件

_da.ImportData();

}

// 事件处理程序

private void DA_EnterNewLine(object sender, long lineNumber)

{

// ...

}

四、IP与主机名解析

使用System可以实现与Ping命令行类似的IP解析功能,例如将主机名解析为IP或者反过来:

private string GetHostNameByIP(string ipAddress)

{

IPHostEntry hostInfo = Dns.GetHostByAddress(ipAddress);

return hostInfo.HostName;

}

private string GetIPByHostName(string hostName)

{

System.IPHostEntry hostInfo = Dns.GetHostByName(hostName);

return hostInfo.AddressList.ToString();

}

参考文献:

[1]李兰友,杨晓光.省略程序设计.北京:清华大学 北方交通大学出版社,2004.

[2]王昊亮,李刚等.Visual C#程序设计教程.北京:清华大学出版社,2003.

[3]孙永强等.省略入门与提高.北京:清华大学出版社,2002.

[4]郭胜等.省略程序设计教程.北京:清华大学出版社,2002.

[5]B-power工作室.C#网络程序设计.北京:中国铁道出版社,2001.

[6][美]Anders Hejlsberg,Scott Wiltamuth,Peter Golde著.张晓坤,谭立平,车树良译.C#编程语言详解.北京:电子工业出版社,2004.

上一篇:计算机专业应用型人才培养的实验教学探讨 下一篇:基于UML学习管理系统的软件建模