如何在不传入IFormatProvider参数的情况下使用IParsable.Parse()?
解决IParsable解析无需显式传IFormatProvider参数的问题
IParsableParse方法强制要求两个参数:目标字符串和IFormatProvider?类型的格式提供器,所以你直接调用T.Parse(str)会触发编译错误。要实现无需调用者传入该参数的解析逻辑,只需在方法内部默认传入一个合法的IFormatProvider?值即可,两种常用方案如下:
- 使用固定的不变文化(InvariantCulture),适合跨区域的通用解析场景:
public static T DifferentParse<T>(string str) where T : IParsable<T> => T.Parse(str, System.Globalization.CultureInfo.InvariantCulture);
- 传入
null,此时会使用当前线程的默认文化,适合依赖系统区域设置的场景:
public static T DifferentParse<T>(string str) where T : IParsable<T> => T.Parse(str, null);
以上两种方式都能让调用者仅传入字符串参数完成解析,无需暴露格式提供器参数。
内容的提问来源于stack exchange,提问作者Matto58
相关产品推荐
相关产品推荐

