正在阅读:由C++转向C#需要注意的变化(六)由C++转向C#需要注意的变化(六)

2004-11-23 10:08 出处:CSDN 作者:AustinLei 责任编辑:linjixiong


  Object[]parameters=newObject[1];
  parameters[0]=45;
  ObjectreturnVal=CosineInfo.Invoke(theObj,parameters);

  需要注意的是,我创建了二个数组,第一个名字为paramTypes的数组存储着参数的类型,第二个名字为parameters的数组保存实际的参数值。如果方法需要二个参数,我们就需要使这二个数组每个保持二个参数。如果方法不需要参数,我们仍然需要创建这二个数组,只是无需在里面存储数据即可。


  Type[]paramTypes=newType[0];

  尽管看起来有点奇怪,但它是正确的。下面是完整的代码:

  映射方法的使用


  usingSystem;
  usingSystem.Reflection;publicclassTester
  {
  publicstaticvoidMain()
  {
  TypetheMathType=Type.GetType("System.Math");
  ObjecttheObj=Activator.CreateInstance(theMathType);

  //只有一个成员的数组
  Type[]paramTypes=newType[1];
  paramTypes[0]=Type.GetType("System.Double");

  //获得Cos()方法的信息
  MethodInfoCosineInfo=
  theMathType.GetMethod("Cos",paramTypes);

  //将实际的参数填写在一个数组中
  Object[]parameters=newObject[1];
  parameters[0]=45;
  ObjectreturnVal=CosineInfo.Invoke(theObj,parameters);
  Console.WriteLine(
  "Thecosineofa45degreeangle{0}",returnVal);

  }
  }

  结论

  尽管有许多小错误等着C++编程人员去犯,但C#的语法与C++并没有太大的不同,向新语言的转换是相当容易的。使用C#的有趣的部分是使用通用语言运行库,这篇文章只能涉及几个重点问题。CLR和.NETFramework提供了对线程、集合、互联网应用开发、基于Windows的应用开发等方面提供了更多的支持。语言功能和CLR功能之间的区分是非常模糊的,但组合在一起就是一种功能非常强大的开发工具了。


察看评论详细内容 我要发表评论
作者笔名 简短内容 发表时间
:
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品