问题标签 [iformatprovider]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
code-analysis - Visual Studio 2010 代码分析 CA1305(指定 IFormatProvider)规则不适用于 TryParse 方法
我想知道为什么代码分析规则CA1305 - 指定 IFormatProvider不适用于 TryParse 方法?
例如,使用“Microsoft 所有规则”规则集,代码分析会针对以下代码发出 CA1305 警告:
但不针对以下代码给出 CA1305 警告:
我发现这很不幸,因为如果输入字符串不可靠,TryParse 方法是进行解析的正确方法。
有谁知道 TryParse 方法的 CA1305 规则是在某些较新版本的代码分析工具中还是由某个第 3 方实现的?
c# - 我可以将 IFormatProvider 与 WPF 绑定一起使用到自定义类型吗?
我有一个自定义类型(SINumber
,它表示具有适当单位和前缀的 SI 编号)。我可以绑定到SINumber
罚款和覆盖SINumber.ToString()
,但显示的是调用 SINumber.ToString() 的结果。
例如,SIMeasurement 是SINumber
SI 值为 3099999.9046325684 Ω 的类型。使用以下绑定,我得到 3.09999990463257 MΩ 的输出。
单位 (Ω) 和前缀 (M = mega) 对话是正确的,问题在于显示的数字数量。我希望能够使用自定义格式化程序(实现IFormatProvider
ICustomFormatter
?)来解释StringFormat
Binding,并合并我的 SI 逻辑(更改前缀)以显示3.10 MΩ。下面是我想使用的绑定示例,其中精度是可定制的(在本例中为 0.00),并且单位的位置由“U”确定。
有什么想法吗?我不想使用硬编码SINumber.ToString()
,因为所需的精度会在应用程序中的不同位置有所不同。
提前致谢。
date - 将日期转换为具有特定格式的字符串时,是否需要提供 IFormatProvider?
如果我使用这个:
FXCop 抱怨我违反了 CA1305 并说我应该提供一个 IFormatProvider。我需要吗?无论如何,我要求以特定格式提供日期(这是我希望将其放入 XML 的格式)。
提供格式提供程序会有什么不同吗?在这种情况下,它实际上会产生错误的结果吗?
c# - ToString(IFormatProvider) 的奇数十进制类型行为
在控制台中:10.00 10 真
为什么不一样?更重要的是,无论变量如何初始化,如何调用 ToString() 以确保相同的输出?
c# - StringBuilder 附加字节而不格式化
上面的代码获取当前日期时间,将其格式化为长值并将其传递给将其转换为压缩十进制格式的方法。我知道上述方法有效,因为当我单步执行代码时,字节数组对于我期望的所有字节都具有正确的十六进制值。
然而,上面是我遇到问题的代码,特别是我研究过并发现字符串生成器.Append(byte)
实际上ToString()
为那个字节做了一个。当它将字节添加到字符串时,它会改变字节的值。问题是我如何告诉StringBuilder
它按原样获取“字节”并将其存储在内存中而不格式化/更改值。我知道还有一个.AppendFormat()
有几个重载,它们使用IFormatProvider
来提供很多关于如何格式化事物的选项,但我没有看到任何方法告诉它不要格式化/更改/更改数据的值。
c# - 为什么 DateTime.ParseExact(String, String, IFormatProvider) 需要 IFormatProvider?
如果我们使用指定格式的精确ParseExact
日期时间解析方法,为什么我们需要提供一个 IFormatProvider 对象?它背后的意义何在?
例如:
为什么我们需要provider
这里?
c# - ICustomFormatter 中的 IFormatProvider
我们希望像往常一样实现自定义格式化程序,最好使用 Microsoft 的接口,所以我找到了 ICustomFormatter。
http://msdn.microsoft.com/en-us/library/system.icustomformatter.format(v=vs.110).aspx
然而,接口的签名提供了这个:
我什至会使用 formatProvider 做什么?我还没有看到很好的例子说明你为什么担心什么 formatProvider 已经加载了这个 ICustomFormatter。
我发现的唯一例子是这样的:
http://www.codeproject.com/Articles/6533/Custom-String-Formatting-in-NET
但这看起来就像糟糕的设计(采用一个接口,然后强耦合它)。
我错过了一些特殊的用例吗?
c# - 如何在 DateTime.ParseExact 中使用 IFormatProvider
如果已经有格式参数,为什么还要使用IFormatProvider
in呢?DateTime.ParseExact
c# - 自定义 String.Format 中的当前索引
我正在研究一个 SQLFormat 函数,它像正常的String.Format
.
现在我坚持依赖当前Format
所在的索引。
例如,我们有这个 SQL 查询(伪,不是实际用法)。
现在的格式是这样的:
它输出的地方@p2
,我希望它重用@p0
(因为我已经添加了那个参数)
这是我的格式化课程。目前我正在使用静态 int 进行索引
我还没有发现我是否可以获得当前的参数索引)。
一种方法是跳过格式化,但我需要这个,所以我可以跳过自己替换标记。(我认为这String.Format
比我可以生成的代码要快:P)
更新:我已经用我当前的代码更新了代码,我预先准备了所有的标记,并将参数名称作为值而不是值推送。
示例用法:
这返回SELECT @p0 /* userID */, @p1 /* userID */
代替
SELECT @p0 /* userID */, @p0 /* userID */
有什么方法可以获取当前索引吗?0
在这种情况下。
c# - Convert.ToString(Decimal, IFormatProvider) 或 String.Format
我已经看到了问题Odd decimal type behavior for ToString(IFormatProvider)
这是我的测试代码
样本结果如下:
为什么 Convert.ToString 不应用该格式?
这是 Win7 Prof/VS2010+SP1Rel (10.0.40219.1)