ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-UserConversions(用户定义的转换)
1.A,示例(Sample) 返回顶部

“用户定义的转换”示例

本示例演示如何定义与类或结构之间的转换,以及如何使用此类转换。有关更多信息,请参见转换运算符(C# 编程指南) 。

安全说明

提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。

在 Visual Studio 中生成并运行“用户定义的转换”示例

  1. 在“解决方案资源管理器”中,右击“Conversion1”项目并单击“设为启动项目”。

  2. 在“调试”菜单上,单击“开始执行(不调试)”。

  3. 对 Conversion2 重复上述步骤。

从命令行生成并运行“用户定义的转换”示例

  1. 使用“更改目录”命令转到“Conversion1”目录。

  2. 键入以下命令:

    csc conversion.cs
    conversion
  3. 使用“更改目录”命令转到“Conversion2”目录。

  4. 键入以下命令:

    csc structconversion.cs
    structconversion

1.B,Conversion1 示例代码(Sample Code)返回顶部

1.B.1, conversion.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。// conversion.cs
using System;struct RomanNumeral
{public RomanNumeral(int value) { this.value = value; }// 声明从 int 到 RomanNumeral 的转换。请注意// operator 关键字的使用。这是名为 // RomanNumeral 的转换运算符:static public implicit operator RomanNumeral(int value) {// 请注意,由于 RomanNumeral 声明为结构,// 因此对该结构调用 new 只是调用构造函数// 而不是在堆上分配对象:return new RomanNumeral(value);}// 声明从 RomanNumeral 到 int 的显式转换:static public explicit operator int(RomanNumeral roman){return roman.value;}// 声明从 RomanNumeral 到// string 的隐式转换:static public implicit operator string(RomanNumeral roman){return("Conversion not yet implemented");}private int value;
}class Test
{static public void Main(){RomanNumeral numeral;numeral = 10;// 调用从 numeral 到 int 的显式转换。由于是显式转换,
// 因此必须使用强制转换:Console.WriteLine((int)numeral);// 调用到 string 的隐式转换。由于没有
// 强制转换,到 string 的隐式转换是可以考虑的
// 唯一转换:
        Console.WriteLine(numeral);// 调用从 numeral 到 int 的显式转换,
// 然后调用从 int 到 short 的显式转换:short s = (short)numeral;Console.WriteLine(s);}
}

View Code

1.B.2,

1.B.EXE,

10
Conversion not yet implemented
10
请按任意键继续. . .

1.B

1.B,Conversions2 示例代码2(Sample Code)返回顶部

1.B.1, structconversion.cs

// 版权所有(C) Microsoft Corporation。保留所有权利。
// 此代码的发布遵从
// Microsoft 公共许可(MS-PL,http://opensource.org/licenses/ms-pl.html)的条款。
//
//版权所有(C) Microsoft Corporation。保留所有权利。// structconversion.cs
using System;struct RomanNumeral
{public RomanNumeral(int value) {this.value = value; }static public implicit operator RomanNumeral(int value){return new RomanNumeral(value);}static public implicit operator RomanNumeral(BinaryNumeral binary){return new RomanNumeral((int)binary);}static public explicit operator int(RomanNumeral roman){return roman.value;}static public implicit operator string(RomanNumeral roman) {return("Conversion not yet implemented");}private int value;
}struct BinaryNumeral
{public BinaryNumeral(int value) {this.value = value;}static public implicit operator BinaryNumeral(int value){return new BinaryNumeral(value);}static public implicit operator string(BinaryNumeral binary){return("Conversion not yet implemented");}static public explicit operator int(BinaryNumeral binary){return(binary.value);}private int value;
}class Test
{static public void Main(){RomanNumeral roman;roman = 10;BinaryNumeral binary;// 执行从 RomanNumeral 到// BinaryNumeral 的转换:binary = (BinaryNumeral)(int)roman;// 执行从 BinaryNumeral 到 RomanNumeral 的转换。// 不需要任何强制转换:roman = binary;Console.WriteLine((int)binary);Console.WriteLine(binary);}
}

View Code

1.B.2,

1.B.EXE,

10
Conversion not yet implemented
请按任意键继续. . .

1.B,

1.C,下载地址(Free Download)返回顶部
作者:ylbtech
出处:http://ylbtech.cnblogs.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

转载于:https://www.cnblogs.com/ylbtech/p/4197415.html

ylbtech-LanguageSamples-UserConversions(用户定义的转换)相关推荐

  1. boost::units模块实现带有转换的用户定义单位的测试程序

    boost::units模块实现带有转换的用户定义单位的测试程序 实现功能 C++实现代码 实现功能 boost::units模块实现带有转换的用户定义单位的测试程序 C++实现代码 #include ...

  2. GIS中的坐标系定义与转换

    GIS中的坐标系定义与转换 青岛海洋地质研究所 戴勤奋 2002-3-27 14:22:47 ----------------------------------------------------- ...

  3. 使用脚本编写 Vim 编辑器,第 2 部分: 用户定义函数

    用户定义函数 Haskell 或 Scheme 程序员会告诉您,函数对于任何严肃的编程语言来说都是最重要的特性.对于 C 或 Perl 程序员,他们也会告诉您完全相同的观点. 函数为严肃的程序员提供了 ...

  4. GIS中的坐标系定义与转换【转】

    1. 椭球体.基准面及地图投影   GIS中的坐标系定义是GIS系统的 基础,正确定义GIS系统的坐标系非常重要.GIS中的坐标系定义由基准面和地图投影两组参数确定,而基准面的定义则由特定椭球体及其对 ...

  5. GVIM 键映射, 缩写和用户定义的命令

    1. 键映射 *key-mapping* *mapping* *macro*键映射用于改变输入键的含义. 最通常的用途是为一个功能键定义成一系列的命令. 比如::map <F2> a< ...

  6. c#.net SQL存储过程直接传表;用户定义表类型的表

    方法一 DataSet dataset = new DataSet(); using (SqlConnection conn = new SqlConnection(SqlHelper.sqlconn ...

  7. CodeGen用户定义的扩展令牌

    CodeGen用户定义的扩展令牌 用户定义的扩展令牌是一种特殊的令牌,开发人员可以确定令牌的名称以及在代码生成过程中遇到令牌时要插入的值. CodeGen支持多种机制,允许通过以下方式实现用户定义的令 ...

  8. java linkedlist排序_用Java对用户定义对象的LinkedList进行排序

    要使用Java对列表进行排序,可以使用sort(List list) 方法.此方法可以对所有元素必须实现Comparable接口的列表进行排序. 在下面的示例中,House类是用户定义的.为了使其具有 ...

  9. 博途数据类型wstring怎么用_如何在STEP 7 (TIA 博途)中使用“用户定义数据类型” (UDTS)...

    说明 创建一个 PLC 数据类型,在项目导航中打开" PLC 数据类型"文件夹并双击"添加新数据类型".新创建的 PLC 数据类型将分配一个默认名称.如果想更改 ...

最新文章

  1. VC 2010的MFC函数,CMFCVisualManager::GetInstance()可能导致内存泄露
  2. 【渝粤题库】陕西师范大学500006 算法语言 作业
  3. 页面 接收跳转数据_【实战案例】在线教育渠道落地页数据分析
  4. php概率计算_替你总结一份MIT计算机课程
  5. 用python扩展snmp
  6. php为首字母的词语,PHP提取中英文词语及数字首字母的简单示例
  7. Docker使用小结(一)Docker镜像以及Docker容器
  8. 无约而来WIN8 PRO WMC X64 201306
  9. shopee虾皮跨境电商怎么样,虾皮跨境电商的优势和劣势
  10. [!] Gradle threw an error while downloading artifacts from the network. Retrying to download... Runn
  11. 属蛇的2020年运势_第一运程 属蛇人2020年每月运势
  12. Spring AspectJ
  13. 异方差性以及加权最小二乘优化
  14. bzoj 5454: Subsequence
  15. 一个leader,要有角色认知
  16. 菜菜包:赛场荣耀的背后,刻着 0 到 1 的执着
  17. 云南师范大学商学院计算机二级证书,云南师范大学商学院计算机科学和技术系.doc...
  18. 安卓最新版本_安卓/苹果 | 两大平台最新版本,看片神器!
  19. Maki微积分习题集理解摘记
  20. python自动化代码生成_python 自动生成C++代码 (代码生成器)

热门文章

  1. 【BZOJ3314】 [Usaco2013 Nov]Crowded Cows 单调队列
  2. mysql中engine=innodb和engine=myisam的区别详解
  3. MATLAB的iptcheckinput函数详解
  4. ios html cookies,iOS-WKWebView携带cookie发送http请求,cookie失效
  5. mysql 拷贝数据库 表存在却打不开_mysql数据库文件复制后表打不开
  6. 使用python获取路径问题
  7. 借助 IIS 管理器 -- 用手机测试HTML页面
  8. Silverlight+WCF 新手实例 象棋 主界面-事件区-求和认输(三十二)
  9. 电力“十三五”蓝图发布 新能源迎发展机遇
  10. 深入 理解 Statement 和 PreparedStatement