Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
#1

Создать метод в классе, изменяющий его свойства - C#

12.09.2012, 14:52. Просмотров 1033. Ответов 17
Метки нет (Все метки)

Вот свойство "данные" при создании переменной данного класса:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public object[] данные()
{
get{
            Object outDataType;
            Object outData;
            блок_акад.GetXData("Ла-ла", out outDataType, out outData);
            object[] Data = outData as object[];
            данные = Data;
}
set
{
}
}
Вот метод, по которому мне в данном свойстве надо изменить определенные элементы:

C#
1
2
3
4
5
6
7
8
9
10
public void заменить()
{
for (int i = 0; i <= данные.Length - 1; i++)
{
 if (условие)
                        {
                            данные[i] = "б-б";
                        }
}
}
В результате работы "данные[i] = "б-б";" вызывается заново get в данных и данные перезаписываются из первоисточника.

Если сделать вот так, то все работает как надо:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public object[] данные { get; set; }
public void заменить()
{
            Object outDataType;
            Object outData;
            блок_акад.GetXData("Ла-ла", out outDataType, out outData);
            object[] Data = outData as object[];
            данные = Data;
for (int i = 0; i <= данные.Length - 1; i++)
{
 if (условие)
                        {
                            данные[i] = "б-б";
                        }
}
}
Можно ли сделать чтобы данные формировались через get, но и была возможность их менять через метод.
http://www.cyberforum.ru/csharp-beginners/thread1187560.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.09.2012, 14:52
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Создать метод в классе, изменяющий его свойства (C#):

Метод Graphics и его свойства
Люди пожалуйста, прошу. Покажите мне готовые фрагменты кода, либо ссылки на...

Как передать тип класса и создать его в другом классе?
Добрый день, форумчане! Есть у меня классы юнитов - Walk, Strong, Fast. Все от...

Как с помощью Enum создать список областей в родительском классе и связать его с базовым
Скажите как с помощью Enum создать список областей в родительском классе и...

Необходимо создать класс, содержащий по возможности все его виды элементов: поля, конструкторы, свойства
Помогите пожалуйста=) для вот это программы нужно создать класс, содержащий по...

Метод, изменяющий цену изделия и выводящий на консоль старую и новую цену
Не могу понять как реализовать метод, помогите. Изменяет...

17
Spectral-Owl
566 / 546 / 151
Регистрация: 29.06.2010
Сообщений: 1,572
Завершенные тесты: 1
12.09.2012, 15:18 #2
Цитата Сообщение от yurasik123 Посмотреть сообщение
set { }
угу, можно. просто не надо оставлять метод set пустым при обработке свойства, и данные можно будет менять))

Добавлено через 15 минут
а вообще конечно бредор:
1) не пиши русскими буквами название переменных методов, классов, объектов, и как у тебя в первой строчки кода непонятно чего, пожалуйста.
2) если твоя первая строчка метод - в нём не должно быть гет и сет. если свойство - то скобок без параметров, указывающих на метод.

ща набросаю чтонибудь подходящее по смыслу

Добавлено через 5 минут
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        private object[] _data;
        public object[] data
        {
            get
            {
                 return _data;
            }
            set
            { 
                _data = value;
            }
        }
 
          public void Remake()
          {
              for (int i = 0; i < data.Length; i++)
                    if (CanRemake)
                          data[i] = "б-б";
          }
хотя можно было и вместо этого метода доопределить set, но это детали
1
Psilon
Master of Orion
Эксперт .NET
5981 / 4834 / 901
Регистрация: 10.07.2011
Сообщений: 14,439
Записей в блоге: 5
Завершенные тесты: 4
12.09.2012, 15:20 #3
Свойство это и так метод. Звучит как "метод, изменяющий метод"...
0
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
12.09.2012, 15:29  [ТС] #4
почему не писать русскими буквами? Есть веская причина почему этого делать не нужно?
А чтобы задать _data (начальное значение) мне надо в методе с именем класса его обозначить так как мне хочется?
А если без доп переменной _data делать, то как это будет выглядеть?

название темы бот средактировал. У меня оно было другим.
0
turbanoff
Эксперт Java
4004 / 3739 / 738
Регистрация: 18.05.2010
Сообщений: 9,322
Записей в блоге: 11
Завершенные тесты: 1
12.09.2012, 15:35 #5
Цитата Сообщение от yurasik123 Посмотреть сообщение
Есть веская причина почему этого делать не нужно?
Править такой код - сложнее, так как придется постоянно переключаться между языками.
0
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
12.09.2012, 15:37  [ТС] #6
Цитата Сообщение от turbanoff Посмотреть сообщение
Править такой код - сложнее, так как придется постоянно переключаться между языками.
если это единственная причина, то мне это не сложно.
0
Spectral-Owl
566 / 546 / 151
Регистрация: 29.06.2010
Сообщений: 1,572
Завершенные тесты: 1
12.09.2012, 15:46 #7
а нам подсказывать так куда сложнее =))
поле _data трогать не нужно совсем. Для этого есть свойство и тссс!... больше про поле знать не должен никто)
0
d3nver
137 / 121 / 27
Регистрация: 20.12.2010
Сообщений: 242
12.09.2012, 15:50 #8
Цитата Сообщение от yurasik123 Посмотреть сообщение
если это единственная причина, то мне это не сложно.
тогда наравне с индусским кодом появится "русский код".

Английский язык в программировании является де-факто, и крайне желательно придерживаться его.
Хотя бы потому, что при работе в интернациональной команде - это будет основным требованием.
Сразу надо приучать себя писать правильно.
0
Spectral-Owl
566 / 546 / 151
Регистрация: 29.06.2010
Сообщений: 1,572
Завершенные тесты: 1
12.09.2012, 15:58 #9
Цитата Сообщение от yurasik123 Посмотреть сообщение
А если без доп переменной _data делать, то как это будет выглядеть?
в смысле както так?
C#
1
2
3
4
5
6
7
8
9
10
11
 public object[] data
        {
            get
            {
                 return data;
            }
            set
            { 
                data = value;
            }
        }
тогда при попытке чтения или установки значения свойство начнёт рекурсивно обращатся к самому себе и в результате возникнет StackOwerflowException

Добавлено через 4 минуты
http://msdn.microsoft.com/ru-ru/library/x9fsa0sw.aspx вот тут о свойствах немного

http://msdn.microsoft.com/ru-ru/library/ms173118.aspx а тут о полях)
1
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
12.09.2012, 16:28  [ТС] #10
с рекурсией я уже столкнулся и слежу чтобы не вляпаться снова )))
я уже параллельно тут http://msdn.microsoft.com/ru-ru/library/w86s7x04.aspx читаю )))
насколько я понял то что я хочу сделать не получится, значит переделаем подругому с учетом вышесказанного ))))
0
magirus
12.09.2012, 16:34
  #11

Не по теме:

Цитата Сообщение от yurasik123 Посмотреть сообщение
название темы бот средактировал.

0
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
12.09.2012, 16:38  [ТС] #12
появился маленький вопросик, как грамотнее сделать?
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        
        private object[] _data;
        public object[] data
        {
            get
            {
                 return _data;
            }
            set
            { 
                _data = value;
            }
        }
          public void Remake()
          {
textbox1.text=data[1];
textbox1.text=_data[1];
          }
0
tezaurismosis
Администратор
Эксперт .NET
8260 / 3764 / 721
Регистрация: 17.04.2012
Сообщений: 8,442
Записей в блоге: 14
12.09.2012, 16:42 #13
Цитата Сообщение от yurasik123 Посмотреть сообщение
почему не писать русскими буквами? Есть веская причина почему этого делать не нужно?
Есть такая книга - "Framework Design Guidlines" от Брэда Абрамса и Кшиштофа Квалины. В ней описаны правила к написанию кода, который можно было бы легко использовать, поддерживать, а он ещё и будет нормально работать при этом - ну разве не прелесть?! Эти правилам придерживается почти вся .NET Framework. Я думаю, это весомый аргумент.
0
Spectral-Owl
566 / 546 / 151
Регистрация: 29.06.2010
Сообщений: 1,572
Завершенные тесты: 1
12.09.2012, 16:43 #14
Цитата Сообщение от yurasik123 Посмотреть сообщение
textbox1.text=data[1];
второй способ микрософты крайне не рекомендуют использовать. и как было сказано ранее, нигде кроме свойства про поле лучше не упоминать)
1
tezaurismosis
Администратор
Эксперт .NET
8260 / 3764 / 721
Регистрация: 17.04.2012
Сообщений: 8,442
Записей в блоге: 14
12.09.2012, 16:45 #15
C#
1
2
3
4
5
6
7
8
9
private object[] _data;
public object[] data {
    get {
        return _data;
    }
    set {
         _data = value;
    }
}
Этот код за вас автоматически сгенерирует компилятор, если напишите
C#
1
public object[] Data { set; get; }
(Кстати, имена свойств типа лучше бы писать с заглавной буквы, по причинам, высказанным выше)
0
Spectral-Owl
12.09.2012, 16:55
  #16

Не по теме:

ну теперь осталось начать спорить о том, что лучше - CamelCase или PascalCase, и нужно ли использовать оба этих стиля сразу... а вообще, т.к. C# перенял львиную долю Java, то можно было бы и перенять их стандарты, и отличать поле от свойства путём нижнего подчеркивания первых)

0
yurasik123
10 / 10 / 3
Регистрация: 28.08.2012
Сообщений: 57
12.09.2012, 16:57  [ТС] #17
Цитата Сообщение от tezaurismosis Посмотреть сообщение
Есть такая книга - "Framework Design Guidlines" от Брэда Абрамса и Кшиштофа Квалины. В ней описаны правила к написанию кода, который можно было бы легко использовать, поддерживать, а он ещё и будет нормально работать при этом - ну разве не прелесть?! Эти правилам придерживается почти вся .NET Framework. Я думаю, это весомый аргумент.
Если найду на русском, то почитаю.
0
tezaurismosis
Администратор
Эксперт .NET
8260 / 3764 / 721
Регистрация: 17.04.2012
Сообщений: 8,442
Записей в блоге: 14
12.09.2012, 17:01 #18

Не по теме:

Цитата Сообщение от Spectral-Owl Посмотреть сообщение
ну теперь осталось начать спорить о том, что лучше - CamelCase или PascalCase
Вы можете использовать что угодно - CamelCase, PascalCase или ЯСамПридумалCase. Майкрософт разработала чёткие рекомендации. Не имею понятия, почему бы к ним прислушаться.



Добавлено через 1 минуту
Цитата Сообщение от yurasik123 Посмотреть сообщение
Если найду на русском, то почитаю.
Советую почитать только после полного прочтения учебника по C# (например, Шилтда)
0
12.09.2012, 17:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.09.2012, 17:01
Привет! Вот еще темы с решениями:

Как создать метод и вызвать его
Всем привет. Вопрос заключается в следующем. Только начинаю изучать C# и...

Создать Generic Mapper, который будет мапить схожие свойства одного объекта в свойства другого
Нужно создать generic mapper, который будет мапить схожие(similar) свойства...

В классе Student определите метод InitAr (Метод должен быть статическим)
Здравствуйте. Помогите пожалуйста разобраться в задании: a. В классе Student...

Как создать правильно новый класс и переопределить его метод
Необходимо создать новый класс родителем которого будет textBox в котором будет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru