0

この数行の 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
4

3 に答える 3

5

コレクション初期化子を使用しようとしているようです。From次のようにキーワードを使用します。

New DataCache() From { 1, tMath.GExp(i) }
于 2012-10-08T03:21:39.827 に答える
0

DataCacheとInt32(int / Integer)の間に暗黙の変換があるようです。この場合、Withキーワードを削除する必要があります。

a = New tPolynomial(New DataCache() {1}, 0)
于 2012-10-06T07:58:19.280 に答える
0

使用している C# はわかりませんがWith、初期化されたオブジェクトのプロパティを設定するために VB キーワードが使用されています。

New Foo() With { .Bar = 1 }

ここで、Foo はクラス、Bar はプロパティです。

参照: http://msdn.microsoft.com/en-us/library/bb385125.aspx

これは、C# がオブジェクト プロパティを初期化する方法と同じですが、C# では " ."

new Foo() { Bar = 1 }

参照: http://msdn.microsoft.com/en-us/library/bb384062.aspx

于 2012-10-06T03:55:11.020 に答える