在 CodeProvider 中使用 "culture"?

Using "culture" in CodeProvider?

我正在使用 VBCodeProvider,但我的问题也适用于 CSharpCodeProvider。

取此代码:

Dim d As Decimal = 1.23

在丹麦,我们切换 .并且,- 所以这将是:

Dim d As Decimal = 1,23

是否可以告诉 VBCodeProvider 或 CSharpCodeProvider 在 运行 编码时使用文化(丹麦语)?

谢谢

更新:

好像我能做到...

.ToString("C2", System.Globalization.CultureInfo.CreateSpecificCulture("da-DK"))

我想做这样的事情...

Dim code = "Return 1,23 * 1,23"
Dim cp As VBCodeProvider = New VBCodeProvider
Dim params As CompilerParameters = New CompilerParameters
Dim results As CompilerResults
params.ReferencedAssemblies.Add("system.dll")
params.ReferencedAssemblies.Add("system.xml.dll")
params.ReferencedAssemblies.Add("system.data.dll")
params.ReferencedAssemblies.Add("System.Windows.Forms.dll")
params.CompilerOptions = "/t:library"
results = cp.CompileAssemblyFromSource(params, code, System.Globalization.CultureInfo.CreateSpecificCulture("da-DK"))

...所以我可以 运行 丹麦语格式的代码。

你不能为所欲为。

无论您的机器是什么文化 运行、

Dim d As Decimal = 1,23

无效 VB.NetLanguage Specification 对此很清楚(我的重点):

2.4.3 Floating-Point Literals

A floating-point literal is an integer literal followed by an optional decimal point (the ASCII period character) and mantissa, and an optional base 10 exponent.

必须使用.作为浮点文字中的小数点。你不能再使用丹麦小数点了,就像法国程序员说的那样

Dimensionné d Comme Nombre Décimal = 1,23

或者中国程序员会说

尺寸 d 十進制數 壹點貳參

(向会看普通话的人道歉,我为此使用了维基词典...)


我注意到我确实有一个模糊的记忆,曾经存在 Excel VBA 的各种特定语言版本!但那些日子早已一去不复返了。