Wie ziet het probleem? (volgens mij een BUG in Windows of het .NET Framework die zich anders gedraagd op bepaalde Windows-versies)
Ik verwacht dat het volgende stukje code op elke machine (ongeacht de taal) hetzelfde werkt
Echter heb ik ondervonden dat de property
Soms een spatie is en soms een punt bevat.
De code
Output
.NET Fiddle: https://dotnetfiddle.net/F11Zsb
Microsoft Windows NT 6.2.9200.0
UseUserOverride: False
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
UseUserOverride: True
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
Meerdere Windows 7 machines
Microsoft Windows NT 6.1.7601 Service Pack 1
UseUserOverride: False
NumberFormat.NumberGroupSeparator: .
OK
UseUserOverride: True
NumberFormat.NumberGroupSeparator: .
OK
Windows 2012 R2
Microsoft Windows NT 6.2.9200.0
UseUserOverride: False
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
UseUserOverride: True
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
Als ik het stukje code in andere online compilers en executions tools smijt zoals http://rextester.com/runcode heb ik hetzelfde gedrag als .NET Fiddler.
Ik kan wel telkens de property instellen, maar dit lijkt mij niet de bedoeling aangezien ik verwacht dat de defaults van CultureInfo overal hetzelfde is.
Andere topic rond Decimal.Parse maar mij niet verder geholpen hebben (niet volledig hetzelfde probleem)
Tweakers:
Ik verwacht dat het volgende stukje code op elke machine (ongeacht de taal) hetzelfde werkt
C#:
1
| var nlBE = new System.Globalization.CultureInfo("nl-BE", false); |
Echter heb ik ondervonden dat de property
C#:
1
| nlBE.NumberFormat.NumberGroupSeparator |
Soms een spatie is en soms een punt bevat.
De code
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| public static void Main() { Console.WriteLine(System.Environment.OSVersion); Console.WriteLine(); var nlBE = default(System.Globalization.CultureInfo); nlBE = new System.Globalization.CultureInfo("nl-BE", false); Console.WriteLine("UseUserOverride: {0}", nlBE.UseUserOverride); Console.WriteLine("NumberFormat.NumberGroupSeparator: {0}", nlBE.NumberFormat.NumberGroupSeparator); Parse("1.000", nlBE); nlBE = new System.Globalization.CultureInfo("nl-BE", true); Console.WriteLine("UseUserOverride: {0}", nlBE.UseUserOverride); Console.WriteLine("NumberFormat.NumberGroupSeparator: {0}", nlBE.NumberFormat.NumberGroupSeparator); Parse("1.000", nlBE); } private static void Parse(System.String value, System.Globalization.CultureInfo cultureInfo) { try { Decimal.Parse(value, cultureInfo); Console.WriteLine("OK"); } catch (Exception ex) { Console.WriteLine(ex.Message); } finally { Console.WriteLine(); } } |
Output
.NET Fiddle: https://dotnetfiddle.net/F11Zsb
Microsoft Windows NT 6.2.9200.0
UseUserOverride: False
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
UseUserOverride: True
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
Meerdere Windows 7 machines
Microsoft Windows NT 6.1.7601 Service Pack 1
UseUserOverride: False
NumberFormat.NumberGroupSeparator: .
OK
UseUserOverride: True
NumberFormat.NumberGroupSeparator: .
OK
Windows 2012 R2
Microsoft Windows NT 6.2.9200.0
UseUserOverride: False
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
UseUserOverride: True
NumberFormat.NumberGroupSeparator:
Input string was not in a correct format.
Als ik het stukje code in andere online compilers en executions tools smijt zoals http://rextester.com/runcode heb ik hetzelfde gedrag als .NET Fiddler.
Ik kan wel telkens de property instellen, maar dit lijkt mij niet de bedoeling aangezien ik verwacht dat de defaults van CultureInfo overal hetzelfde is.
C#:
1
| nlBE.NumberFormat.NumberGroupSeparator = "."; |
Andere topic rond Decimal.Parse maar mij niet verder geholpen hebben (niet volledig hetzelfde probleem)
Tweakers:
- http://gathering.tweakers.net/forum/list_messages/1348442
- http://gathering.tweakers.net/forum/list_messages/1021869