是否可以在C#中创建一个通用的数字解析器?

是否可以在C#中创建一个通用的数字解析器?,第1张

概述要解析一个字符串到int,一个调用Int32.Parse(string),double,Double.Parse(string),long,Int64.Parse(string)等等. 是否可以创建一个使其通用的方法,例如ParseString(T)(string)?其中T可以是Int32,Double等.我注意到数字类型不实现任何公共接口,而Parse方法没有任何公共父. 有没有办法达到这个或类 要解析一个字符串到int,一个调用Int32.Parse(string),double,Double.Parse(string),long,Int64.Parse(string)等等.

是否可以创建一个使其通用的方法,例如ParseString(T)(string)?其中T可以是Int32,Double等.我注意到数字类型不实现任何公共接口,而Parse方法没有任何公共父.

有没有办法达到这个或类似的东西?

解决方法 您基本上必须使用反射来找到相关的静态Parse方法,调用它,并将返回值转回到T.或者,您可以使用 Convert.ChangeType或获取相关的 TypeDescriptor和关联的 TypeConverter.

一种更有限但有效(在某些方面很简单)的方法是将字典从类型保存到解析委托 – 将委托转换为Func< string,T>并调用它.这将允许您针对不同类型使用不同的方法,但您需要了解您需要转换为最前面的类型.

无论你做什么,你将无法指定一个通用约束,这将使编译时安全.真的需要像static interfaces这样的想法.编辑:如上所述,有IConvertible接口,但这并不一定意味着你可以从字符串转换.另一种类型可以实现IConvertible,而无需从字符串转换到该类型.

总结

以上是内存溢出为你收集整理的是否可以在C#中创建一个通用的数字解析器?全部内容,希望文章能够帮你解决是否可以在C#中创建一个通用的数字解析器?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1263573.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存