ylbtech-LanguageSamples-UserConversions(用户定义的转换)
| ylbtech-Microsoft-CSharpSamples:ylbtech-LanguageSamples-UserConversions(用户定义的转换) |
| 1.A,示例(Sample) 返回顶部 |
“用户定义的转换”示例
本示例演示如何定义与类或结构之间的转换,以及如何使用此类转换。有关更多信息,请参见转换运算符(C# 编程指南) 。
| 安全说明 |
|---|
|
提供此代码示例是为了阐释一个概念,它并不代表最安全的编码实践,因此不应在应用程序或网站中使用此代码示例。对于因将此代码示例用于其他用途而出现的偶然或必然的损害,Microsoft 不承担任何责任。 |
在 Visual Studio 中生成并运行“用户定义的转换”示例
在“解决方案资源管理器”中,右击“Conversion1”项目并单击“设为启动项目”。
在“调试”菜单上,单击“开始执行(不调试)”。
对 Conversion2 重复上述步骤。
从命令行生成并运行“用户定义的转换”示例
使用“更改目录”命令转到“Conversion1”目录。
键入以下命令:
csc conversion.cs
conversion使用“更改目录”命令转到“Conversion2”目录。
键入以下命令:
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 = ; // 调用从 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 ...
随机推荐
- 线程同步工具 Semaphore类使用案例
参考博文 : 线程同步工具(一) 线程同步工具(二)控制并发访问多个资源 并发工具类(三)控制并发线程数的Semaphore 使用Semaphore模拟互斥锁 当一个线程想要访问某个共享资源,首先,它 ...
- Java学习笔记(一)——关于java中的String类
[前面的话] 毕业将近6个月了,试用期也快要过去了,期待接下来的日子.在金融类性质的机构,最痛苦的是也许就是大部分系统外包,所以比较少写代码,在这六个月中只写了1个月左右的代码,然后每天都在做一些比较 ...
- 远程连接服务器上的MySQL
crt.navicat.Linux系统.MySQL 远程连接上Linux系统,确保Linux系统已经安装上了MySQL数据库.登陆数据库.mysql -uroot -p(密码). 创建用户用来远程连接 ...
- 找不到 libgtk-x11-2.0.so.0
找不到 libgtk-x11-2.0.so.0 安装 yum groupinstall "Development Tools" yum install gtk+-devel gtk ...
- CentOS 7.4 下面安装 jdk 10 的一点总结
CentOS 7.4 下面安装 jdk 10 的一点总结 一.前期工作 1.检验系统原版本 [root@zck ~]# java -version java version "1.7.0_& ...
- (error) DENIED Redis is running in protected mode because protected mode is enabled
在通过Java程序链接配置好的redis服务时出现 DENIED Redis is running in protected mode because protected mode is enable ...
- CodeForces 738A Interview with Oleg
模拟. #pragma comment(linker, "/STACK:1024000000,1024000000") #include<cstdio> #includ ...
- Linux命令之find(二)
接上一篇Linux命令之find(一) (1).实例 1.列出当前目录下及子目录下所有的.txt文件 [xf@xuexi ~]$ ls 1.txt 3.txt b.txt 公共 视频 文档 音乐 2. ...
- 子查询在INSERT语句中的应用
在使用INSERT语句的时候,一般都是使用它向数据库中一条条的插入数据,比如: INSERT INTO MyTable(FId,FName,FAge)VALUES(1,"John" ...
- 解决PHPExcel长数字串显示为科学计数
在excel中如果在一个默认的格中输入或复制超长数字字符串,它会显示为科学计算法,例如身份证号码,解决方法是把表格设置文本格式或在输入前加一个单引号. 使用PHPExcel来生成excel,也会遇到同 ...
