VB.NET Указатель на типы значений
VB.NET 2010, .NET 4
Всем привет,
Я ни в коем случае не хороший программист, и я просто пытаюсь обдумать некоторые из этих вещей, поэтому, пожалуйста, прости меня, если это глупый вопрос.
Я хочу, чтобы следующее выдало сообщение "2", а не "5":
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 просто добавляет копию. Извините, если это бессвязно. Есть ли простой способ сделать это?
Заранее спасибо, Брайан
Изменить: я просто хотел добавить, я подозреваю, что люди скажут: "Зачем пытаться сделать это?"/"Это не очень хорошая вещь, чтобы попытаться сделать". и т.д. Я согласен с этим и хотел бы узнать лучший подход, если таковой существует, однако мне также любопытно, как это можно сделать, будь то хорошая практика или нет. Кроме того, если это не хорошая практика (что бы это ни значило), почему?
1 ответ
Это вывод 5, потому что ваш MsgBox ссылается SomeInt
не 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
,
Вы можете начать с:
Private ListOfInts как новый список (целого числа)
Public Sub New(SomeInt As Integer)
ListOfInts.Add(SomeInt)
' processes
ListOfInts(0) = 2
MsgBox(SomeListOfInts(0).ToString)
End Sub
Может быть, немного больше информации о том, что вы пытаетесь сделать, я могу помочь вам приблизиться к вашим ожиданиям.