摘要:
recently somebody asked how to get the hard drive serial number in vb.net. the easy answer of course is to use vbscript with the wmi classes. actually, this gets the "volume" serial ......
摘要:
问:如何简便快速的转换字符数组到字符串?<br>
答:char[] ar;<br>
string s = new string(ar);<br>
<br>
问:我想遍历窗体中的某个控件(如datetimepicker),怎么办? <br>
答:foreach(co......
概述C#中的索引器
c#语言一个最令人感兴趣的地方就是类的索引器(indexer).简单说来,所谓索引器就是一类特殊的属性,通过它们你就可以像引用数组一样引用自己的类.显然,这一功能在创建集合类的场合特别有用,而在其他某些情况下,比如处理大型文件或者抽象某些有限资源等,能让类具有类似数组的行为当然也是非常有用的.本文就会引领你设置类来采用索引器.但是,首先让我们概述下属性这个概念以便了解些必要的背景知识.
属性
假如你曾经用vb6编写过程序,那么你应该很熟悉属性方法才对,所谓属性方法其实就是特殊的类成员,它实现了对私有类域的受控访问.在c#语言中有两种属性方法,其一是get,通过它可以返回私有域的值,其二是set,通过它就可以设置私有域的值.比如说,以下面的代码为例,其间创建了一个firstname属性,由它控制对私有类成员firstname的访问:
class person {
private string firstname;
public string firstname {
get {return firstname;}
set {firstname = value;}
}
}
属性声明可以如下编码:
person p = new person();
p.firstname = "lamont";
console.writeline (p.firstname);
如你你所看到的那样,属性声明倒更像是域声明,只不过它还声明了两个特殊的成员,按照微软的说法就是所谓的访问函数(accessor).当某一表达式的右边调用属性或者属性用作其他子程序(或者函数)的参数时即会调用get访问函数.反之,当表达式左边调用属性并且通过隐式传递value参数设置私有域值的情况下就会调用set访问函数.你可以创建只读属性,方法是省略set访问函数,这样任何设置属性的尝试都会产生编译错误.
采用索引器的益处
说了半天咱们转到正题上来,那么为什么我要兜这个圈子呢?其实,这是因为类的索引器非常像属性,从代码上看也是这样....
下一页 摘要:
声明约束
在 c# 中,程序可以为泛型类中声明的每个类型参数提供可选约束列表。约束表示要将一个类型构造成泛型所必须满足的要求。可以使用 where 关键字声明约束,该关键字后跟“参数-要求”对,其中“参数”必须是泛型中定义的某个参数,“要求”必须是类或接口。
为了满足在 dictionary 类中使用 compareto 方法的需要,程序可以对 keytype 类型参数添加约束,......