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

实例解析C++/CLI中的继承与枚举

  测试程序

  例6是测试交易类型的程序,它会创建一个具体交易类型的数组、遍历此数组、调用每个元素的PostTransaction函数。插1是某次执行后的输出,默认使用的是美国式的日期时间格式,即为,月、日、年、12小时制。

  例6:


using namespace System;

int main()
{
 array<Transaction^>^ list = gcnew array<Transaction^> {
  gcnew Deposit(123.05, 12345),
  gcnew Transfer(Decimal::Parse("1256.40"), 1111, 222),
  gcnew Withdrawal(34.54, 232323),
  gcnew Deposit(56.12, 14321)
 };
 for each (Transaction^ t in list)
 {
  t->PostTransaction();
 }
}


  插1:例6某次执行后的输出

3/20/2005 12:36:16 AM -- Dep: 123.05 12345
3/20/2005 12:36:18 AM -- Xfer: 1256.40 222 1111
3/20/2005 12:36:19 AM -- With: 34.54 232323
3/20/2005 12:36:21 AM -- Dep: 56.12 14321

  枚举与继承

  一个CLI enum类型通常实现为一个值类型,且隐式继承自System::Enum。同样地,此类型的静态与实例成员,它们的基类System::ValueType与类型的基类System::Object,在CLI enum类型或此类型的任意实例中,都可以访问到。插2是例7的输出。

  例7:

using namespace System;

public enum class Color {Black, White, Red};
public enum class TransactionType :
unsigned char {Deposit, Withdrawal, Transfer};
int main()
{
 Color c = Color::White;

 /*1*/ Console::WriteLine("Color::Red's name is >{0}<",
 Enum::GetName(c.GetType(), Color::Red));
 Console::Write("Color's members are:");

 /*2*/ array<String^>^ names = Enum::GetNames(Type::GetType("Color"));
 for each (String^ s in names)
 {
  Console::Write(" {0}", s);
 }
 Console::WriteLine();

 /*3*/ Console::WriteLine("The type underlying Color is >{0}<",
 Enum::GetUnderlyingType(Color::typeid));

 /*4*/ Console::WriteLine("The type underlying TransactionType is >{0}<",
 Enum::GetUnderlyingType(TransactionType::typeid));
}

  插2:例7的输出

Color::Red's name is >Red<
Color's members are: Black White Red
The type underlying Color is >System.Int32<
The type underlying TransactionType is >System.Byte<

  在标号1中,调用了Enum::GetName以找出特定enum类型枚举器的名称,第一个参数必须为System::Type类型,而获取它的一个方法就是通过对感兴趣的变量调用Object::GetType。

  在标号2中,调用了Enum::GetNames以找出特定enum类型全部枚举器的名称,第一个参数必须为System::Type类型,而获取它的一个方法就是通过对感兴趣的变量(其以字符串形式表示的名称)调用Type::GetType。

  在标号3及标号4中,调用了Enum::GetUnderlyingType以找出这两个CLI enum类型的底层类型,此处使用了一个更简单的方法用于找出类型的Type对象--新形式的typeid操作符。

 

上一页  [1] [2] [3] [4] [5] [6] [7] 下一页

【责编:Peng】

中国IT教育

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

 ·WEB程序开发--ASP.NET和PHP、JSP究竟学哪个?
 ·五步带你入门XML
 ·关于Java框架技术专题
 ·XML全攻略技术专题
 ·JAVA开源技术介绍专题
 ·Java嵌入式开发之J2ME技术专题
 ·超前体验 Oracle 11g的5个新特性…
 ·揭密使用VB.NET的五个实用技巧
 ·Oracle和SQL Server常用函数对比专题…
 ·展现C#世界 C#程序设计专题…
 今日更新
 社区讨论
 博客论点
 频道精选
 Dotnet频道相关导航