1

これは、辞書にキーと値が既に含まれているかどうかを確認occurences し、それにキーと値を割り当てる方法です...しかし、別の値が必要な場合、ここでオブジェクトを使用するにはどうすればよいですか?

Occurences.Add(xRows.Cells(4).Value.ToString(), Object)

どういうわけかこのように:

occurences(xRows.Cells(4).Value.ToString()) = Double.Parse(occurences(xRows.Cells(4).Value.ToString()).ToString()) + <"1st object value here">)

しかし、これは私が現在行っている方法で、キーと値しかありませんが、キー、(値、値) を持つオブジェクトのようなものが必要です。

実際のコード:

If (occurences.ContainsKey(xRows.Cells(4).Value.ToString())) Then
    occurences(xRows.Cells(4).Value.ToString()) = Double.Parse(occurences(xRows.Cells(4).Value.ToString()).ToString()) + Double.Parse(xRows.Cells(7).Value.ToString())
Else
    occurences.Add(xRows.Cells(4).Value.ToString(), Double.Parse(xRows.Cells(7).Value.ToString()))
End If

Next

次に、オブジェクトの2番目の値を使用する必要がある挿入用の別のコードがあります。

Using commm As New MySqlCommand()
    With commm
         .Parameters.Clear()
         .Parameters.AddWithValue("@iBrnchCde", cmbBrnchCode.Text)
         .Parameters.AddWithValue("@iFCode", pair.Key)
         .Parameters.AddWithValue("@iDesc", <"2nd OBJECT VALUE HERE"> )
         .Parameters.AddWithValue("@iQty", pair.Value)
         .CommandText = oInsertString
         .Connection = _conn
         .CommandType = CommandType.Text
     End With
     commm.ExecuteNonQuery()
End Using
4

2 に答える 2

1

あなたの質問を完全に理解しているかどうかはわかりませんが、理解している場合は、別のアプローチを提案します。

値を保持するクラスを作成してから、クラスをディクショナリに追加しないでください。または、クラス タイプのディクショナリを作成します。

Public myClass
    Public Code As String
    Public Desc as String
    ....
End Class

Dim myClassInstance as New myClass
'initialize fields
occurences.Add(key, myClassInstance)

if typeof value is myclass thenディクショナリのタイプとしてオブジェクトを選択した場合は、値をオブジェクトとして取得して使用します。

オブジェクトを選択すると、もちろんさまざまなクラスとタイプを保存できますが、コストはキャスティングです。可能であれば、キャストを避けるために使用するタイプの辞書を作成してください。

Private myDictionary as New Dictionary(Of String, myClass)
于 2012-12-03T06:08:22.370 に答える