我进行了搜索,但未找到问题的答案。如果已经被问过,我会很感激帮助找到它。
我对编码有点新意,我正在尝试将程序从VB转换为C#。
这是原始的VB代码:
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
以下是我将其转换为C#代码所做的工作:
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}
在C#代码的第10行,我收到错误:
'double.TryParse(string,out double)'的最佳重载方法匹配有一些无效的参数
这对我来说没有意义,因为参数是正确的类型(字符串和双精度)。它们是否以其他方式无效?
答案 0 :(得分:2)
doubleParam
是一个out
参数,所以你应该明确告诉它:
double.TryParse(quantityparamstring, out quantityparam);
答案 1 :(得分:1)
使用out
关键字
double.TryParse(quantityparamstring, out quantityparam);