我有這樣的VB代碼C#替代VB代碼
Try
For i = 0 To OutData.NumMerids - 1
With OutData.MeridData(0)
.NumCurves = InStepFiveData.ConvexSurfaceData.MultiCurveData.NumOzCurves + InStepFiveData.ConvexSurfaceData.MultiCurveData.NumLenticularCurves
ReDim .CurveData(.NumCurves - 1)
End With
Next
...
我想產生類似的C#代碼。我使用了一些邏輯並且扣除了下面的代碼。
try
{
for (i = 0; i <= OutData.NumMerids - 1; i++)
{
// var _with25 = OutData.MeridData[0];
OutData.MeridData[0].NumCurves =(short) (InStepFiveData.ConvexSurfaceData.MultiCurveData.NumOzCurves + InStepFiveData.ConvexSurfaceData.MultiCurveData.NumLenticularCurves);
// ERROR: Not supported in C#: ReDimStatement
Array.Resize(ref OutData.MeridData[0].CurveData, OutData.MeridData[0].NumCurves - 1);
}
...
}
只想知道我做錯了什麼?
謝謝
請考慮在代碼評論中發佈此內容。 http://codereview.stackexchange.com/ – Maverick
請記住,雖然'Array.Resize'似乎只是調整你的數組的大小,它實際上創建一個副本在幕後有效地改變對你的數組的引用。在這種情況下,這意味着如果您以前將'OutData.MeridData [0] .CurveData'分配給某個其他變量,它將仍然指向一個未調整大小的數組。 – Ash
不要在你的'Resize'調用中減1。 C#數組維度和大多數框架函數按*長度*工作,VB數組聲明按* bounds *工作。這通常意味着C#和VB之間涉及數組的相當的代碼,當其中至少有一個使用語言結構(而不是庫函數)時,需要將值調整一。 –