下一页 1 2 3
引言:每隔10年左右,编程人员就需要花费大量的时间和精力去学习新的编程技术。在80年代是Unix和C,90年代是Windows和C++,现在又轮到了微软的.NETFramework和C#。尽管需要学习新的技术,但由此带来的好处却远高于付出的劳动。
幸运的是,使用C#和.NET进行的大多数工程的分析和设计与在C++和Windows中没有本质的变化。在本篇文章中,我将介绍如何实现由C++到C#的飞跃。
已经有许多文章介绍过C#对C++的改进,在这里我就不再重复这些问题了。在这里,我将重点讨论由C++转向C#时最大的变化:由不可管理的环境向可管理的环境的变化。此外,我还会提出一些C#编程人员容易犯的错误供大家参考,此外,还将说明一些C#语言的能够影响编程的新功能。
系列文章:[由C++转向C#需要注意的变化(一)(二)(三)(四)(五)]
只发现方法
我们可能会只关心方法,而不关心域、属性等,为此,我们需要删除如下的对GetMembers的调用:
MemberInfo[]mbrInfoArray= theType.GetMembers(BindingFlags.LookupAll); |
然后添加调用GetMethods的语句:
mbrInfoArray=theType.GetMethods(); |
现在,输出中就只剩下方法了。
Output(excerpt) BooleanEquals(System.Object)isaMethod System.StringToString()isaMethod System.StringCreateQualifiedName(System.String,System.String) isaMethod System.Reflection.MethodInfoget_EntryPoint()isaMethod |
发现特定的成员
最后,为了进一步地缩小范围,我们可以使用FindMembers方法来发现某一类型的特定的方法。例如,在下面的代码中,我们可以只搜索以“Get”开头的方法。
publiclearcase/" target="_blank" >cclassTester { publicstaticvoidMain() { //检查一个单一的对象 TypetheType=Type.GetType("System.Reflection.Assembly"); //只获取以Get开头的成员 MemberInfo[]mbrInfoArray theType.FindMembers(MemberTypes.Method, BindingFlags.Default, Type.FilterName,"Get*"); foreach(MemberInfombrInfoinmbrInfoArray) { |