关于C#.net的四个操作技巧|关于c级19寸鼓包
时间:2018-12-30 03:37:18 来源:雅意学习网 本文已影响 人
摘要: 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.