问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

ssma为什么动态字符串需要手动转换

发布网友 发布时间:2022-03-28 22:14

我来回答

1个回答

热心网友 时间:2022-03-28 23:43

我们日常工作中经常会遇到将字符串转换为值类型的问题,比如"123"
转换为一个Int32类型,这个很简单,我们只要调用int.Parse 函数就可以实现。eaglet
今天要说的是,一些应用中往往在编码阶段无法知道字符串需要转换成的值类型的具体类型,而需要在运行时动态指定类型进行转换,遇到这种问题,我们如何解决?
一个典型的例子。

如下函数,我们只知道value 是一个基本值类型,比如(System.Int32, System.Int16,
System.Double 等等) 或者是一个字符串类型。但我们无法在编码时确定这个value
具体是什么类型,它可能是由一个外部组件从某个数据源中读出来的基本类型中的一种类型的实例或者是字符串类型实例。
这个函数希望实现比较value 是否在minValue, maxValue这两个字符串对应的数值区间类,其中minValue 和 maxValue 构成一个闭区间,即
value in [minValue, maxValue]

public static bool MyComparer(object value, string minValue, string maxValue)

要解决这个问题,我们需要解决两个基本问题。
1. 如何比较value 和 minValue, maxValue
2. 如何将minValue 和 maxValue 转换到value 对应的数据类型
首先我们来看如何进行比较

所有的基本值类型和string 类型都实现 IComparable这个接口。我们可以指定 value 为
IComparable,然后调用CompareTo来进行比较。不过这里有个问题,CompareTo 函数的参数obj 虽然是一个 object
类型,但这个 obj 的类型必须和 value 一致,否则将发生异常。也就是说我们不能把minValue 任意转换成某个类型比如 long
带进去,而需要将 minValue 和 maxValue 转换成和 value 一样的类型才行。

下面我们就来讨论如何将字符串转换为指定的值类型。
我们需要实现下面的函数:

public static object ToType(Type type, string value)
type 为指定的类型,value 为输入的字符串。

首先我们知道所有的基本值类型都有一个叫 Parse 静态函数,我们只要把这个静态函数反射出来,就可以通过这个静态函数将字符串转换成对应的值类型。
下面代码给出如何反射出这个静态函数。通过向对象type(Type类型)的GetMethods 函数输入 BindingFlags.Static
| BindingFlags.Public 参数,我们可以枚举出这个类型所有的静态公共函数。

然后我们判断这个函数的名称是否为 "Parse" ,由于 Parse 函数有多个重载,但一个参数的重载只有 Parse (String)
所以我们需要判断mi 只有一个参数,这时取到的 mi 就是 Parse (String) 函数。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
形容手表很舒服的句子 情侣手表的对话句子 租门面和房东鉴了十年合同,房东要退店面,我可以不退吗,继续经 ...一篇朝花夕拾里十篇小短文的主要内容及作者的情感和主要人物的... 什么叫狼狗 狼狗的生活习性有哪些? 起个姓罗好听的宝宝名字 野火的近义词 个是词语解释 请旌词语解释 评中级工程师职称需要什么条件? 能不能具备评高级工程师的条件? 大专学历有没有资格评高级工程师 高级工程师职称条件,高级职称评定条件,国家是什... 请问副高级工程师评定条件是什么 浙江省评助工,中工,高工职称需不需要学位证? 工程师要几年才有资格评高工? 中级是市政,满五年可以评建筑高工吗,浙江职称评审 浙江省工程技术类职称评定条件是什么? 浙江省高级职称评定相关? 浙江省职称评定办法的省市制定的补充条件 高级职称评审条件是什么? 浙江省职称评定,高级工程师需要那些条件?高级在... 高级职称申报条件 高级职称的评定条件 高级工程师职称评审条件有哪些 评职称需要什么条件? 高工职称评审的条件是什么? c语言 动态字符串数组 C语言中FILE*fp是什么意思 炸果条的做法和配方 炸油果的家常做法 各种油炸果子做法大全 东北炸果子做法和配方 老式炸果子做法和配方是什么? 街边那香甜酥脆不发硬的炸果子,是用什么诀窍做出... 小果子怎么炸 农村过年糯米面炸果子怎么做 家常果子怎么炸 怎么炸果子好吃 过年炸小果子的做法是怎样的? 老式炸果子做法和配方 油炸果子的做法图片 炸大果子的做法和配方是什么? 炸果子的做法家庭做法及配方 自己在家应该怎样炸果子 油炸果子做法 红薯炸果子怎么做 懂得北方过年炸果子的来认下这个学名叫什么?马蹄... 怎么关闭笔记本电脑的触摸板