ylbtech-LanguageSamples-UserConversions(用户定义的转换)
ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-UserConversions(用户定义的转换) |
1.A,示例(Sample) 返回顶部 |
“用户定义的转换”示例
本示例演示如何定义与类或结构之间的转换,以及如何使用此类转换。有关更多信息,请参见转换运算符(C# 编程指南) 。
安全说明 |
---|
提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。 |
在 Visual Studio 中生成并运行“用户定义的转换”示例
在“解决方案资源管理器”中,右击“Conversion1”项目并单击“设为启动项目”。
在“调试”菜单上,单击“开始执行(不调试)”。
对 Conversion2 重复上述步骤。
从命令行生成并运行“用户定义的转换”示例
使用“更改目录”命令转到“Conversion1”目录。
键入以下命令:
- csc conversion.cs
- conversion
- csc conversion.cs
使用“更改目录”命令转到“Conversion2”目录。
键入以下命令:
- csc structconversion.cs
- structconversion
- csc structconversion.cs
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 = ;
- // 调用从 numeral 到 int 的显式转换。由于是显式转换,
- // 因此必须使用强制转换:
- Console.WriteLine((int)numeral);
- // 调用到 string 的隐式转换。由于没有
- // 强制转换,到 string 的隐式转换是可以考虑的
- // 唯一转换:
- Console.WriteLine(numeral);
- // 调用从 numeral 到 int 的显式转换,
- // 然后调用从 int 到 short 的显式转换:
- short s = (short)numeral;
- Console.WriteLine(s);
- }
- }
1.B.2,
1.B.EXE,
- Conversion not yet implemented
- 请按任意键继续. . .
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 = ;
- BinaryNumeral binary;
- // 执行从 RomanNumeral 到
- // BinaryNumeral 的转换:
- binary = (BinaryNumeral)(int)roman;
- // 执行从 BinaryNumeral 到 RomanNumeral 的转换。
- // 不需要任何强制转换:
- roman = binary;
- Console.WriteLine((int)binary);
- Console.WriteLine(binary);
- }
- }
1.B.2,
1.B.EXE,
- Conversion not yet implemented
- 请按任意键继续. . .
1.B,
1.C,下载地址(Free Download)返回顶部 |
![]() |
作者:ylbtech 出处:http://ylbtech.cnblogs.com/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。 |
ylbtech-LanguageSamples-UserConversions(用户定义的转换)的更多相关文章
- C++笔记之用户定义的转换
用户定义的转换(User-defined Conversion) 是一种将一个类类型转换为另一种类型的机制 语法 operator conversion-type-idexplicit operato ...
- CREATE CAST - 定义一个用户定义的转换
SYNOPSIS CREATE CAST (sourcetype AS targettype) WITH FUNCTION funcname (argtype) [ AS ASSIGNMENT | A ...
- CREATE CONVERSION - 定义一个用户定义的码制转换
SYNOPSIS CREATE [DEFAULT] CONVERSION name FOR source_encoding TO dest_encoding FROM funcname DESCRIP ...
- C#高级编程四十一天----用户定义的数据类型转换
用户定义的数据类型转换 C#同意定义自己的 数据类型,这意味着须要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...
- C#编程(四十一)----------用户定义的数据类型转换
用户定义的数据类型转换 C#允许定义自己的 数据类型,这意味着需要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...
- GIS中的坐标系定义与转换
GIS中的坐标系定义与转换 青岛海洋地质研究所 戴勤奋 2002-3-27 14:22:47 ----------------------------------------------------- ...
- Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)
Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...
- 【翻译】Flink Table Api & SQL — 用户定义函数
本文翻译自官网:User-defined Functions https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/tabl ...
- SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题
用户定义函数(UDF)分类 SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...
随机推荐
- poj2104 主席树 区间K大 在线 无修改
关于主席树: 主席树(Chairman Tree)是一种离线数据结构,使用函数式线段树维护每一时刻离散之后的数字出现的次数,由于各历史版本的线段树结构一致,可以相减得出区间信息,即该区间内出现的数字和 ...
- 六十六 aiohttp
asyncio可以实现单线程并发IO操作.如果仅用在客户端,发挥的威力不大.如果把asyncio用在服务器端,例如Web服务器,由于HTTP连接就是IO操作,因此可以用单线程+coroutine实现多 ...
- centos 7 mini版中安装Python3.x
首先了解几句Linux命令是必须的.例如 ls, vi, wget, rm, mv, cd, su, sudo, chmod, tar等等一些常用的语句命令是有必要知道它的用法的. 安装Python3 ...
- 【转载】LinearLayout 源码分析
原文地址:https://github.com/razerdp/AndroidSourceAnalysis/blob/master/LinearLayout/android_widget_Linear ...
- python url配置单独放在某个应用目录中
文件目录: 将 urls.py 文件复制blog目录下: 此时,blog文件夹下多了urls.py文件 现在对比,两个urls.py文件: 分离前:(只有website里有urls.py) from ...
- ZOJ 2974 Just Pour the Water
矩阵快速幂. 构造一个矩阵,$a[i][j]$表示一次操作后,$j$会从$i$那里得到水的比例.注意$k=0$的时候,要将$a[i][j]$置为$1$. #pragma comment(linker, ...
- Poj2482 Stars in Your Window(扫描线)
题面 Poj 题解 下面内容引用自"李煜东 <算法竞赛进阶指南>"(对原文略有缩减,侵删): 因为矩形的大小固定,所以矩形可以由它的任意一个顶点唯一确定.我们可以考虑把 ...
- application.xml
application.xml Deployment Descriptor Elements The following sections describe the application.xml f ...
- python 写文件write(string), writelines(list) ,读文件
read()方法用于直接读取字节到字符串中,可以接参数给定最多读取的字节数,如果没有给定,则文件读取到末尾. readline()方法读取打开文件的一行(读取下个行结束符之前的所有字节),然后整行,包 ...
- 【BZOJ 1478】 1478: Sgu282 Isomorphism (置换、burnside引理)
1478: Sgu282 Isomorphism Description 给 定一个N 个结点的无向完全图( 任意两个结点之间有一条边), 现在你可以用 M 种颜色对这个图的每条边进行染色,每条边必须 ...