У меня есть этот код VBC# альтернатива код 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
Не вычитайте 1 в своем вызове 'Resize'. Размеры массива C# и большинство функций фрейма работают в терминах * lengths *, объявления массива VB работают в терминах * границ *. Обычно это означает, что сопоставимый код между C# и VB с участием массивов, когда хотя бы один из них использует языковые конструкции (а не библиотечные функции), требует корректировки значения на единицу. –