C#内建接口:IConvertible

    这节来讲一个比较有意思的接口:IConvertible。

    IConvertible接口处于System.Runtime命名空间下,这个接口规定了一批ToXxx()方法,凡是实现了这个接口的方法,我们都可以尝试将其转换为自己想要的类型。

         IConvertible中有什么?       

C#内建接口

    我们来看一下IConvertible中的元素:

91bd999d9dd1163f1afa9a5d4a2fcc01.png

    这里边涵盖了C#所有基元类型,以及引用类型,接下来我针对其中几个方法做出演示和解释,请看如下代码:

286531edab69de23e48039609bf322bd.png

(为了方便截图,我隐藏了用不到的方法以及将部分方法体简化为Lambda表达式)

    上述代码有三个属性:是否成年,年龄,姓名。此处拿IConvertible其中的ToBoolean,ToType,ToInt32,ToString三个方法演示。注意:建议显式实现该接口,因为在大多数情况下,我们并不需要这些转换方法,在需要的时候,我们可以把实例赋值给IConvertible来获得转换功能。

    另外,请大家忽略参数IFormatProvider,这个参数用于传入语言文化,绝大多数情况我们只需要传入null即可,后续我们会单独对此接口进行讲解。

    ToBoolean/String/Int32这三个方法代码很好理解,只是返回对应类型的变量值:ToBoolean返回是否成年,ToString返回Name等。另外我们可以看到,除了众多的ToXxx方法,还有个返回值为TypeCode的GetTypeCode方法,这个方法官方给出的解释是返回当前实例的类型枚举。TypeCode是个枚举,如下图:

4ea2853ab87650ce26b77555e554d027.png

也就是说,如果是一般的类我们应该让其返回TypeCode.Objcet。

    GetType这个方法,则是用于转为一个对象,其第一个参数指定要转换的类型,此处只是转换为另一个IConvertibleTest对象,相当于复制它自己,下面我们在Main方法中调用它们演示一下:

aac577b9f1461b2f07e6ac4189f234e7.png

    控制台输入结果为:

ae6a247adeb0fc3aea6566d98b7e7ab0.png

     String 与 IConvertible     

C#内建接口

    我们经常使用的stirng也是显式实现了IConvertible接口的,请看如下代码:

5dd4ed32d39e13674501584714501a54.png

    字符串“100”,转为int,就是100,但是不能转为bool, 字符串“false”/“true”(不区分大小写)是可以转为bool的,由此我们可以了解,string实现IConvertible接口的形式,用它可以帮助我们将一些合理的字符串转换成一些明确的类型。
    当前,除了string,其它基元类型也有显式实现IConvertible接口,有兴趣的同学可以自己写代码测试,本节不再赘述。

 END

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/288087.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ArcGIS升级地理数据库

本博文教大家如何快速地将低版本地理数据库升级为高版本地理数据库。 方法一:使用“升级地理数据库”工具箱二、使用ArcCatalog地理数据库→右键→属性。三、创建不同版本的地理数据库

汉高软件服务器安装系统,如何安装了如指掌眼镜管理系统的服务器和客户端,还需要安装什么软件的?...

满意答案ven85202014.05.09采纳率:53% 等级:7已帮助:356人易软眼镜店管理系统它整合了整个眼镜店的收费、客户登记、验光单管理、配镜管理、财务管理和查旬报表以及库存管理一体化的管理系统。随时可以查看客户的验光单、对比,…

Python3 实现单例设计模式

单例模式的一般实现 饿汉式 懒汉式就是通过一个方法才能实现单例,我不是很常用,所以在此就写个饿汉式。以后再补懒汉式。 单例模式的核心作用是保证一个类只有一个该类型的对象。在一个对象被过多调用时避免过多的消耗内存,即可使用单例模式…

基于casbin的ABAC/RBAC权限实践

五一假期疫情封在家也没事做,就想来优化一下一个前端容器小项目之前的TODOlist里面有一项是权限这块时隔2年了还一直没有动手迟迟没搞主要还是我太懒了,哈哈 其实我一直想要找一个轻量级的权限通用方案权限的数据源可以切换,但是逻辑基本不用…

Python3 实现建造者模式

建造者模式 建造者模式用于创建复杂的对象。使用建造者模式可以使复杂的过程层次明了、清晰,把对象的创建以及使用进行了解耦。实际上从代码的角度上看,是进行了多次封装,使代码结构更为规范合理,层次结构更加鲜明。 在一个复杂…

系列网络服务器机柜,什么是网络机柜 网络机柜和服务器机柜有哪些区别【详解】...

【网络机柜】什么是网络机柜 网络机柜和服务器机柜区别服务器机柜和网络机柜的区别服务器机柜 :用来组合安装面板、插件、插箱、电子元件、器件和机械零件与部件,使其构成一个整体的安装箱。可以配置:专用固定托盘、专用滑动托盘、电源插排、…

【3D Max】3D max如何删除环境贴图

问题描述:在用3dm max贴图的时候,如果不选中对象,很容易将图贴到背景环境中去,情况如下所示: 解决办法有二: 一、不参与渲染 快捷键8,在“环境和效果”窗口中去掉“使用贴图”前面的√。 二、…

C#语法糖系列 —— 第四篇:聊聊 Span 的底层玩法

把 Span 归于语法糖,可能有些偏了,但偏了就偏了,哈哈,只要是分享就好,C# 发展至今,已经是一门非常重的语言了,所有想要的它都要,即可以:面向过程编程面向对象编程面向函数…

【ArcGIS风暴】河流水系左斜体样式经典设置方法

目录 一、效果预览 二、实现方法 一、效果预览 河流水系在作图时一般设置为左斜体、蓝色,如黄河、青海湖、洮河等,如下图所示: 二、实现方法 下面介绍在ArcGIS 10.5中的实现方法。 1、ArcGIS设置方法 绘图工具添加文字或者将标注转为注记,双击,打开属性,点击更改符号…

HBase简介(很好的梳理资料)

HBase HBaseHadoop网络应用数据结构NoSQL 一、 简介 history started by chad walters and jim 2006.11 G release paper on BigTable 2007.2 inital HBase prototype created as Hadoop contrib 2007.10 First useable Hbase 2008.1 Hadoop become Apache top-level project …

python 实现原型设计模式

原型设计模式主要在当新建一个对象的时候,觉得很麻烦,并且你又要保留当前对象。在这种情况下使用原型设计模式是一个很好的解决办法。 例如你写一个东西更新,不同的版本,这个时候以前的版本肯定要保留,并且从此基础上…

装服务器显示磁盘脱机,服务器磁盘处于脱机

服务器磁盘处于脱机 内容精选换一换配置目的端或启动目的端时提示“SMS.1311 目的端磁盘个数不够”。在配置目的端服务器过程中,会校验目的端磁盘数量是否和源端一致。当出现该错误时,检查目的端服务器磁盘数量是否少于源端服务器磁盘数量,或…

剑指offer之重建二叉树

1 问题 重建二叉树:给定二叉树的先序遍历(根左右)和中序(左中右)遍历结果,建立这棵二叉树。输入保证二叉树无重复结点 以先序{1, 2, 4, 7, 3, 5, 6, 8}和中序{4, 7, 2, 1, 5, 3, 8, 6}为例 2 分析 先序遍…

ArcGIS 10.5专题地图制作自定义漂亮图框

先来看一下效果: 下面来说明如何在ArcGIS软件里面实现自定义图框。 1. 【自定义】→【样式管理器】→【Administrator.style】→【边框】→【新建】→【常规边框】。 2. 点击【更改符号】。 3. 点击【编辑符号】。

当我会AOP之后,去丈母娘家都是挺着胸脯!

当和朋友谈到AOP时,第一映像会说AOP的应用层面,比如拦截器、过滤器,实现复用等等使用层面上。这些应用层面上的回答远远没有深入AOP的思想。是的,AOP是思想,面向切面思想。既然是编程思想,那我们就有必要了…

python 最简单的实现适配器设计模式

适配器设计模式是懒得改动某些代码,或者某些接口不方便改动的时候,使用一个特定的封装,一些特定的编写办法,使不同的接口可以使用同种调用方式使用。 更简单的说话则是,例如几个不同的接口 aliyun、qiniuyun、tencent…

Envi和ArcGIS软件打开和处理.NC4数据

NC4是NetCDF-4的简缩形式。 NetCDF(network Common Data Form)网络通用数据格式是由美国大学大气研究协会(University Corporation for Atmospheric Research,UCAR)的Unidata项目科学家针对科学数据的特点开发的,是一种面向数组型并适于网络共享的数据的描述和编码标准。目…

C#多线程调试

概要这篇文章主要分享多线程部分调试技巧,在日常的开发工作中会经常遇到多线程调试的需要。在我们调试的过程中会出现断点的焦点在多个线程之间“反复横跳”根本无法集中跟踪某一个线程的操作链路。那么今天我们来看看如何调试操作。如果有其它需要的可以参考下面微…

最速下降法(梯度下降法)

最速下降法的影子在机器学习中正是无处不在,它简单实用。 一、表示 在最速下降法中,对权值向量w的连续调整是在最速下降的方向上,即它是与梯度向量方向相反的,梯度向量记为(1),简记(…

游戏服务器销售额,游戏服务器销售一个月

游戏服务器销售一个月 内容精选换一换应用容器化改造有三种方式,您可单击这里查看。本教程以某游戏为例,将该游戏进行微服务的架构改造,再进行容器化。本教程不对改造细节做深度讲解,仅讲解大致的建议。如需要详细了解容器化改造的…