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 = ; // 调用从 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(用户定义的转换)的更多相关文章

  1. C++笔记之用户定义的转换

    用户定义的转换(User-defined Conversion) 是一种将一个类类型转换为另一种类型的机制 语法 operator conversion-type-idexplicit operato ...

  2. CREATE CAST - 定义一个用户定义的转换

    SYNOPSIS CREATE CAST (sourcetype AS targettype) WITH FUNCTION funcname (argtype) [ AS ASSIGNMENT | A ...

  3. CREATE CONVERSION - 定义一个用户定义的码制转换

    SYNOPSIS CREATE [DEFAULT] CONVERSION name FOR source_encoding TO dest_encoding FROM funcname DESCRIP ...

  4. C#高级编程四十一天----用户定义的数据类型转换

    用户定义的数据类型转换 C#同意定义自己的 数据类型,这意味着须要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...

  5. C#编程(四十一)----------用户定义的数据类型转换

    用户定义的数据类型转换 C#允许定义自己的 数据类型,这意味着需要某些 工具支持在自己的数据类型间进行数据转换.方法是把数据类型转换定义为相关类的一个成员运算符,数据类型转换必须声明为隐式或者显式,以 ...

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

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

  7. Hadoop Hive概念学习系列之hive里的用户定义函数UDF(十七)

    Hive可以通过实现用户定义函数(User-Defined Functions,UDF)进行扩展(事实上,大多数Hive功能都是通过扩展UDF实现的).想要开发UDF程序,需要继承org.apache ...

  8. 【翻译】Flink Table Api & SQL — 用户定义函数

    本文翻译自官网:User-defined Functions  https://ci.apache.org/projects/flink/flink-docs-release-1.9/dev/tabl ...

  9. SQL SERVER中用户定义标量函数(scalar user defined function)的性能问题

    用户定义函数(UDF)分类  SQL SERVER中的用户定义函数(User Defined Functions 简称UDF)分为标量函数(Scalar-Valued Function)和表值函数(T ...

随机推荐

  1. c# 多线程多文件批量下载

    废话少说,先演示一张效果图 简单说下过程喽 开发过程中其实总是会碰到项目想应用下载文件~ 看其他语言有很多封装好的类库可以使用~~ 作为小白的我并没有找到很多c#的案例可参考 后找到一款“MutThr ...

  2. Freemarker中JS取Data-model的值的问题

    不能在表达式中使用js变量,比如: var key = 1; var value = "${stateMap[key]}"; 因为Freemarker是在服务器端进行解析的,此时j ...

  3. Message Queue中的推与拉(转)

    Message Queue的设计和实现(7)http://mp.weixin.qq.com/s/zQdDBAHu1UgJJzxH2eCHgQ 数据发送中的推与拉. 当MQ要把数据给消费者的时候,就涉及 ...

  4. php-cgi segmentation fault nginx

    谷歌.百度了一堆后,无果. yum安装软件也报segmentation fault 果断重装系统吧

  5. Codeforces 1099 D. Sum in the tree-构造最小点权和有根树 贪心+DFS(Codeforces Round #530 (Div. 2))

    D. Sum in the tree time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  6. 转:vscode中调试php

    转:http://blog.csdn.net/x356982611/article/details/52664334 简介 PHP是动态语言没有调试器的话排错起来很是麻烦.vscode可以说是程序员的 ...

  7. Linux操作命令(二)

    本次实验将介绍 Linux 命令中 mkdir.rm.mv.cp.cat.nl 命令的用法. 1.mkdir mkdir命令用来创建指定名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的 ...

  8. 基于SAAJ的客户端

    概述 SAAJ - SOAP with Attachments API for JAVA 结构图如下: 正文 1. 如何获取soap请求的关键参数 关键的参数有四个: xmlns - xml命名空间如 ...

  9. HTTP协议1:工作原理

    http://blog.csdn.net/huangjin0507/article/details/51678858 1. HTTP简介 HTTP协议(HyperText Transfer Proto ...

  10. 可持久化线段树(cf1080F)

    大佬博客 https://www.cnblogs.com/zinthos/p/3899565.html 题目:https://codeforces.com/problemset/problem/108 ...