Вопрос: VB2005 массивы | Добавлено: 08.03.07 19:50 |
Автор вопроса: ![]() |
У меня есть массив к которому привязаны свойства через Structure. Есть ли ф-ия или св-во что бы убить в середине запись и массив сдвинулся на 1 убитую запись? Или всёже нада пересобирать массив, т.е. писать отдельную ф-ию? |
Ответы | Всего ответов: 37 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #1 | Добавлено: 08.03.07 20:08 |
И можно ли так же убить элемент св-ва этого массива? если свойство тоже предстваляет массив |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #2 | Добавлено: 09.03.07 00:34 |
RemoveAt или Remove
Разница в том, что в первом случае в качестве параметра передаешь индекс элеменна массива, а во втором непосредственно объект.. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #3 | Добавлено: 09.03.07 09:44 |
Ах, если было бы всё так просто. Вот у меня код
//Обьявление в классе Class Structure Test ![]() ![]() End Structure //Процедура Dim Tests() as Class.Test ReDim tests(3) Tests(1).TestA = "123" Tests(2).TestA = "345" Tests(3).TestA = "567" После этого, св-во Remove можно применить как нистранно только TestA или TestB, а к самому обьекту нельзя. Как быть? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #4 | Добавлено: 09.03.07 16:18 |
Сорри .. просмотрел, что речь идео о "чистом" массиве.
В этом случае придется пересобирать его заново.. Я для удобства операций обычно пользуюсь его наследником ArrayList или любой другой коллекцией. В них все эти операции операции предусмотрены.. |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #5 | Добавлено: 10.03.07 00:26 |
Можно примерчик как бы реализовать что было выше? А то я с vb2005 пока не сильно дружу ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #6 | Добавлено: 10.03.07 01:45 |
Как один из вариантов:
Public Class Form1
Structure Man Sub New(ByVal Name As String, _ ByVal Age As Int32) _name = Name _age = Age End Sub Private _name As String Public Property Name() As String Get Return _name End Get Set(ByVal Value As String) _name = Value End Set End Property Private _age As Int32 Public Property Age() As Int32 Get Return _age End Get Set(ByVal Value As Int32) _age = Value End Set End Property Public Overrides Function ToString() As String Return String.Format("Имя: {0} Возраст: {1} лет", Me.Name, Me.Age) End Function End Structure Private Sub Form1_Load(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles MyBase.Load Dim Tests As New List(Of Man) Tests.Add(New Man("Вася", 19)) Tests.Add(New Man("Маша", 27)) Dim _man As New Man("Настя", 25) Tests.Add(_man) Tests.RemoveAt(1) MessageBox.Show(Tests(1).ToString) End Sub End Class |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #7 | Добавлено: 10.03.07 20:57 |
А при такой структуре как изменять значения эелемента, т.е. как сейчас к примеру изменить age у Васи? |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #8 | Добавлено: 10.03.07 21:00 |
Tests(0).Age=25 |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #9 | Добавлено: 10.03.07 21:03 |
ха, пишет ошибку +) |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #10 | Добавлено: 10.03.07 21:07 |
Я уже пробывал и так и сяк +)
Ошибка : Expression is value and therefore cannot be the target of an assignment. |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #11 | Добавлено: 10.03.07 21:08 |
![]() myMan.Age = 25 |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 33 Ответов: 81 |
Профиль | Цитата | #12 | Добавлено: 10.03.07 21:11 |
но всёже это не изменяет значение в массиве Test(0).Age =( |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #13 | Добавлено: 10.03.07 21:14 |
Вообще.. все книги рекомендуют отказаться от использования структур из за особенностей их хранения в памяти..
Поэтому предпочтительнее вместо структуры использовать класс.. меньше хлопот будет.. |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #14 | Добавлено: 10.03.07 21:15 |
Конечно не изменит.. это же структура! Она не является ссылочным типом..
именно об этом я только что и говорил... |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() Вопросов: 58 Ответов: 4255 ![]() |
Профиль | Цитата | #15 | Добавлено: 10.03.07 21:17 |
А если будешь юзать класс, то все будет именно так, как ты и предполагаешь.. |
|