首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 网页设计 | 技术专题 | 电子书下载 | 教学视频 | 网页设计 | 平面设计 | 搜索 | 博客 | 论坛
中国IT实验室Dotnet频道
中国IT教育
首页 ASP.NET  C#  XML/WebService ADO.NET VC.NET VB.NET .NET 资讯动态 专题 RSS订阅 讨论 下载
您现在的位置: 中国IT实验室 >> Dotnet >> VC.NET >> 文章正文

实例解析C++/CLI中的接口与泛型

文章来源ChinaItLab 作者谢启东编… 更新时间2007-1-16 保存本文保存本文 推荐给好友推荐给好友 收藏本页收藏本页

  在标号1与2中,为访问底层的List或Queue,使用了一个指向接口的句柄c,由此,你可传递给ProcessCollection一个指向任意对象的句柄,只要它的类实现了这个接口,或者它是从实现了这个接口的类继承而来的。

  例6演示了一个包含只读属性X、只写属性Y、读写属性Z的接口,对读写属性来说,get与set声明的顺序并不重要。

  例6:


public interface class IProperties
{
 property int X { int get(); }
 property String^ Y { void set(String^ value); }
 property Object^ Z { Object^ get(); void set(Object^ value); }
};


  一个接口的成员,可以为静态数据成员、实例或静态函数、静态构造函数、实例或静态属性、实例或静态事件、操作符函数、或任意的嵌套类型。

  一般来说,我们会用for each语句来枚举集合中的所有元素,要对集合中的每个元素逐个进行操作,可使用如下语法:

   for each (表达式形式的类型标识符)
    嵌入语句

  表达式类型必须为一个"集合类型",如果要成为一个集合类型,这个类型必须实现接口System::Collections::IEnumerable,如例7中所定义。

  例7:

public interface class IEnumerable
{
 IEnumerator^ GetEnumerator();
};


  正如大家所见,GetEnumerator返回一个指向IEnumerator的句柄,如例8中所定义。

  例8:

public interface class IEnumerator
{
 bool MoveNext();
 void Reset();
 property Object^ Current { Object^ get(); }
};


  System::Array为一个集合类型,因为所有的CLI数组类型都继承自System::Array,所以,任何数组类型表达式都可以作为for each语句中的表达式。在例9的标号1中,for each用于遍历一个int数组,标号2中的处理过程也一样,但直接使用了枚举器。

  例9:

using namespace System;
using namespace System::Collections;
int main()
{
 array<int>^ ary = gcnew array<int>{10, 20, 30, 40};
 /*1*/ for each (int i in ary)
 {
  Console::Write(" {0}", i);
 }
 Console::WriteLine();
 /*2*/ IEnumerator^ ie = ary->GetEnumerator();
 while (ie->MoveNext())
 {
  Console::Write(" {0}", static_cast<int>(ie->Current));
 }
 Console::WriteLine();
}

 

上一页  [1] [2] [3] [4] 下一页  

【责编:Peng】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题
 ·展现C#世界 C#程序设计专题
 ·Java入门 Tomcat的配置技巧精华专题
 ·Oracle RMAN物理备份技术详解
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航