0

VB.NET 2010、.NET 4

皆さんこんにちは、

私は決して優れたプログラマーではなく、このようなことについて頭を抱えているだけなので、これがばかげた質問である場合はご容赦ください。

「5」ではなく「2」というメッセージボックスを生成するには、次のようにします。

Public Class SomeClass
  Private SomeInt As Integer = 5
  Private SomeListOfInts As New List(Of Integer)

  Public Sub New()
    SomeListOfInts.Add(SomeInt)
    SomeListOfInts(0) = 2
    MsgBox(SomeInt.ToString)
  End Sub
End Class

これはうまくいきません。メッセージ ボックスには「5」と表示されます。その理由はある程度理解できたと思います。SomeInt は値型なので、これを SomeListOfInts に追加するとコピーが追加されるだけです。これが一貫性がない場合は申し訳ありません。これを達成する簡単な方法はありますか?

前もって感謝します、ブライアン

編集: 追加したかったのですが、人々は「なぜこれをしようとするのですか?」/「これをしようとするのは良いことではありません」と言うと思います。私はそれで大丈夫で、より良いアプローチがあれば知りたいと思っていますが、それが良い習慣であるかどうかにかかわらず、このようなことがどのように行われるかについても一般的に興味があります。また、それが良い習慣ではない場合 (それが何を意味するにせよ)、なぜですか?

4

1 に答える 1

1

MsgBox が を参照SomeIntているため、出力 5 です。 SomeListOfInts(0)

これを試して:

Public Class SomeClass
  Private SomeInt As Integer = 5
  Private SomeListOfInts As New List(Of Integer)

  Public Sub New()
    SomeListOfInts.Add(SomeInt)
    SomeListOfInts(0) = 2
    MsgBox(SomeListOfInts(0).ToString) // here is the change
  End Sub
End Class

これ...

SomeListOfInts(0) = 2

リスト内のインデックス付き要素 0 を 5 (要素 0 の元の値) から 2 に変更します。また、int値型です。したがって、SomeIntリストに追加すると、値の型のコピーが作成されます。コピーは、オリジナルに影響を与えることなく変更できますSomeInt

あなたはから始めることができます:

新しい List(Of Integer) としてのプライベート ListOfInts

Public Sub New(SomeInt As Integer)
    ListOfInts.Add(SomeInt)

    ' processes

    ListOfInts(0) = 2
    MsgBox(SomeListOfInts(0).ToString)
End Sub

あなたがやろうとしていることについてもう少し背景を知っていれば、あなたの期待に近づけるお手伝いができるかもしれません.

于 2010-11-12T00:42:12.117 に答える