【发布时间】:2016-06-30 07:16:18
【问题描述】:
我知道 C# 中没有 Redim 语句。我用 VB 编写了这段旧代码,然后使用 Telerik Tool 将其转换为 C#。现在在线工具遇到Redim语句时给出了一些cmets。 VB代码和C#代码如下。
Public Function ReadMultiCurvedDataFromFile(ByRef filenumber As Short) As ConvexMultiCurveDataType
Dim i As Short
Dim OutData As ConvexMultiCurveDataType = InitConvexMultiCurveDataType()
Try
With OutData
FileGet(filenumber, .BlendFactor)
FileGet(filenumber, .EdgeRadius)
FileGet(filenumber, .OZShapeFactor)
FileGet(filenumber, .OZPrismOffset)
FileGet(filenumber, .NumOzCurves)
If .NumOzCurves > 0 Then
ReDim .OZCurveData(.NumOzCurves - 1)
For i = 0 To .NumOzCurves - 1
FileGet(filenumber, .OZCurveData(i))
Next
End If
FileGet(filenumber, .NumLenticularCurves)
If .NumLenticularCurves > 0 Then
ReDim .CurveData(.NumLenticularCurves - 1)
For i = 0 To .NumLenticularCurves - 1
FileGet(filenumber, .CurveData(i))
Next
End If
End With
Catch ex As Exception
End Try
Return OutData
End Function
C# 代码
public static Mold_Power_Suite.Model.ConvexSurfaceStructures.ConvexMultiCurveDataType ReadMultiCurvedDataFromFile(ref short filenumber)
{
int filenumber1 = filenumber;
long i = 0;
Mold_Power_Suite.Model.ConvexSurfaceStructures.ConvexMultiCurveDataType OutData =ConvexSurfaceStructures. InitConvexMultiCurveDataType();
try
{
var _with30 = OutData;
FileSystem.FileGet(filenumber,ref _with30.BlendFactor);
FileSystem.FileGet(filenumber,ref _with30.EdgeRadius);
FileSystem.FileGet(filenumber,ref _with30.OZShapeFactor);
FileSystem.FileGet(filenumber, ref _with30.OZPrismOffset);
FileSystem.FileGet(filenumber,ref _with30.NumOzCurves);
if (_with30.NumOzCurves > 0)
{
//Array.Resize();
// ERROR: Not supported in C#: ReDimStatement
for ( i = 0; i <= _with30.NumOzCurves - 1; i++)
{
FileSystem.FileGet(filenumber1, ref _with30.OZCurveData[i]); // GETTING MENTIONED ERROR HERE
}
}
FileSystem.FileGet(filenumber,ref _with30.NumLenticularCurves);
if (_with30.NumLenticularCurves > 0)
{
// ERROR: Not supported in C#: ReDimStatement
for (i = 0; i <= _with30.NumLenticularCurves - 1; i++)
{
FileSystem.FileGet(filenumber1, ref _with30.CurveData[i]); //GETTING MENTIONED ERROR HERE
}
}
}
catch (Exception ex)
{
}
return OutData;
}
OZCurveData 已被定义为
Dim OZCurveData() As ConvexOZCurveDataType
和 ConvexOZCurveDataType 为
Public Structure ConvexOZCurveDataType
Dim SphereRadius As Double
Dim CylRadius As Double
Dim Diameter As Double
Dim Addition As Double
End Structure
我在上述行中遇到错误。错误是
'Microsoft.VisualBasic.FileSystem.FileGet(int, ref System.DateTime, long)' 的最佳重载方法匹配有一些无效参数
Redim 也是一个问题。
【问题讨论】:
-
参见this关于redim。
-
你是怎么得到 redim word 下的背景颜色的?
-
用法
Array.Resize(ref array, new size); -
_with30.CurveData[i]的类型是什么?还有_with30.OZCurveData[i]之一? -
CurveData 的 exact VB 定义(一直到它所涵盖的原始数据类型)是您问题的本质(比您的代码行更相关)发布)。请将它们包含在您的问题陈述中,不要让评论者一次将这些信息拉出一个问题。