我正在尝试将这几行C#转换为Vb几个小时,但我无法使其正常工作。
Friend Shared Function GetErrorCorrectPolynomial(ByVal errorCorrectLength As Integer) As tPolynomial
Dim a As tPolynomial
a = New tPolynomial(New DataCache() With {1}, 0)
For i As Integer = 0 To errorCorrectLength - 1
a = a.Multiply(New tPolynomial(New DataCache() With { 1, tMath.GExp(i) }, 0))
Next i
Return a
End Function
我收到此错误 在对象初始值设定项中初始化的字段或属性的名称必须以“。”开头。
这一部分{1}
原始代码
internal static tPolynomial GetErrorCorrectPolynomial(int errorCorrectLength)
{
tPolynomial a = new tPolynomial(new DataCache() { 1 }, 0);
for (int i = 0; i < errorCorrectLength; i++)
{
a = a.Multiply(new tPolynomial(new DataCache() { 1, tMath.GExp(i) }, 0));
}
return a;
}
编辑添加Datacache类
Friend Class DataCache
Inherits List(Of Integer)
Public Sub New(ByVal capacity As Integer)
MyBase.New()
For i As Integer = 0 To capacity - 1
MyBase.Add(0)
Next i
End Sub
Public Sub New()
MyBase.New()
End Sub
End Class
答案 0 :(得分:4)
您似乎正在尝试使用collection initializer。使用From
关键字,如下所示:
New DataCache() From { 1, tMath.GExp(i) }
答案 1 :(得分:0)
我不认识您正在使用的C#,但VB With
关键字用于设置初始化对象的属性。
New Foo() With { .Bar = 1 }
其中Foo是类,Bar是属性。
请参阅:http://msdn.microsoft.com/en-us/library/bb385125.aspx
这与C#初始化对象属性的方式相同,除了C#省略“.
”
new Foo() { Bar = 1 }
答案 2 :(得分:0)
看起来DataCache和Int32(int / Integer)之间存在隐式转换,在这种情况下,您应该只删除With关键字:
a = New tPolynomial(New DataCache() {1}, 0)