Ich habe eine Suche durchgeführt und keine Antwort auf meine Frage gefunden. Wenn es bereits gefragt wird, würde ich mich freuen, es zu finden.Die beste überladene Methodenübereinstimmung für 'double.TryParse (string, out double)' hat einige ungültige Argumente
Ich bin ein bisschen neu in der Codierung und ich versuche, ein Programm von VB zu C# zu konvertieren.
Dies ist der ursprüngliche VB-Code:
For Each grpkey In groups.Keys.ToArray
Dim grp = groups(grpkey)
If grp.SmartKitParameters.Count > 0 Then
Dim partnameparam = GetParameterValue(grp.SmartKitParameters, "%SMARTKITNAME%", "")
Dim maintcodeparam = GetParameterValue(grp.SmartKitParameters, "%MAINTCODE%", "P")
Dim divisioncodeparam = GetParameterValue(grp.SmartKitParameters, "%DIVISIONCODE%", "W")
Dim quantityparam As Double
Double.TryParse(GetParameterValue(grp.SmartKitParameters, "%QUANTITY%", "0"), quantityparam)
Dim smkt As New Part With
{
.PartID = allparts.Values.Max(Function(p) p.PartID) + 1,
.DPLType = grp.Parts.Values.First.DPLType,
.Plane = grp.Parts.Values.First.Plane,
.Quantity = quantityparam,
.MaintCode = maintcodeparam,
.PartNumber = partnameparam,
.Plant = divisioncodeparam,
}
Dim parentgrp = GetGroup(groups, smkt.DPLType, smkt.Plane, "(Default Group)")
parentgrp.Parts.Add(smkt.PartID, smkt)
allparts.Add(smkt.PartID, smkt)
groups.Remove(grpkey)
End If
Using specdimscmd As New OleDbCommand("Select * From DPLSpecialDimensions;", conn)
Using rdr = specdimscmd.ExecuteReader
While rdr.Read
Dim partid = rdr.GetInteger("PartID", 0)
If allparts.ContainsKey(partid) Then
allparts(partid).SpecialDimensions.Add(New SpecialDimension With
{
.PartID = partid,
.SpecDimID = rdr.GetInteger("SpecDimID", 0),
.MaintCode = rdr.GetString("MaintCode", ""),
.SpecialType = rdr.GetString("SpecialType", ""),
.SpecialDim = rdr.GetSingle("SpecialDim", 0.0)
})
End If
End While
End Using
End Using
Next
Hier ist, was ich habe diesen Code in C# konvertieren getan:
1 foreach (string grpkey_loopVariable in groups.Keys.ToArray)
2 {
3 if (grp.SmartKitParameters.Count > 0)
4 {
5 string partnameparam = GetParameterValue(grp.SmartKitParameters, "%SMARTKITNAME%", "");
6 string maintcodeparam = GetParameterValue(grp.SmartKitParameters, "%MAINTCODE%", "P");
7 string divisioncodeparam = GetParameterValue(grp.SmartKitParameters, "%DIVISIONCODE%", "W");
8 double quantityparam = 0;
9 string quantityparamstring = GetParameterValue(grp.SmartKitParameters, "%QUANTITY%", "0.0");
10 double.TryParse(quantityparamstring, quantityparam);
11
12 Part smkt = new Part
13 {
14 PartID = allparts.Values.Max(p => p.PartID) + 1,
15 DPLType = grp.Parts.Values.First().DPLType,
16 Plane = grp.Parts.Values.First().Plane,
17 Quantity = quantityparam,
18 MaintCode = maintcodeparam,
19 PartNumber = partnameparam,
20 Plant = divisioncodeparam,
21 };
22
23 dynamic parentgrp = GetGroup(groups, smkt.DPLType, smkt.Plane, "(Default Group)");
24 parentgrp.Parts.Add(smkt.PartID, smkt);
25
26 allparts.Add(smkt.PartID, smkt);
27
28 groups.Remove(grpkey);
29 }
30
31 using (OleDbCommand specdimscmd = new OleDbCommand("Select * From DPLSpecialDimensions;", conn))
32 {
33 using (OleDbDataReader rdr = specdimscmd.ExecuteReader())
34 {
35 while (rdr.Read())
36 {
37 dynamic partid = GetInteger(rdr as IDataReader, "PartID", 0);
38 if (allparts.ContainsKey(partid))
39 {
40 allparts[partid].SpecialDimensions.Add(new SpecialDimension
41 {
42 PartID = partid,
43 SpecDimID = GetInteger(rdr as IDataReader, "SpecDimID", 0),
44 MaintCode = GetString(rdr as IDataReader, "MaintCode", ""),
45 SpecialType = GetString(rdr as IDataReader, "SpecialType", ""),
46 SpecialDim = GetSingle(rdr as IDataReader, "SpecialDim", 0)
47 });
48 }
49 }
50 }
51 }
52}
in Zeile 10 in dem C# -Code, erhalte ich der Fehler:
Das macht für mich keinen Sinn, da die Argumente der richtige Typ (String und Double) sind. Sind sie auf andere Weise ungültige Argumente?
Sie müssen die 'Bereich führt zum Schlüsselwort –