我使用VBCodeProvider,但我的问题也适用于CSharpCodeProvider。
拿这段代码:
Dim d As Decimal = 1.23
在丹麦,我们改变了。而且, - 所以这将是:
Dim d As Decimal = 1,23
运行代码时是否可以告诉VBCodeProvider或CSharpCodeProvider使用culture(丹麦语)?
由于
更新
就像我可以做到这一点......
.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"))
...所以我可以用丹麦语格式运行代码。
答案 0 :(得分:0)
你无法做你想做的事。
无论您的机器运行何种文化,
Dim d As Decimal = 1,23
无效VB.Net 。 Language Specification很明显(我的重点):
2.4.3浮点文字
浮点文字是整数文字,后跟可选项 小数点( ASCII句点字符)和尾数,以及 可选的基数10指数。
您必须使用.
作为浮点文字中的小数点。你不能再使用丹麦小数点,而不是法国程序员可以说
Dimensionné d Comme Nombre Décimal = 1,23
或中国程序员可以说
尺寸 d 十進制數 壹點貳參
(向任何能阅读普通话的人道歉,我为此使用了维基词典......)
我注意到我确实有一个模糊的记忆,有一次,各种特定语言版本的Excel VBA确实存在!但那些日子早已不复存在。