Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> вызов методов в свойствах, описаных как {get;set;} 
V
    Опции темы
Bogdan1024
  Дата 12.2.2011, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1436
Регистрация: 28.9.2005
Где: Киев

Репутация: 5
Всего: 13



Вот есть свойство вроде такого:
Код

public int A{get;set;}

Я хочу чтобы в set отрабатывала функция, которая учитывала бы value. Реально ли организовать оператор set без использования дополнительной переменной? Т.е. я хочу типо такого:
Код

public int A{
get{return this.a;}
set{ this.a=value; DoSomething(value);}
}
private int a;

Но хочу без использования дополнительной переменной a. Умеет ли C# так делать? smile 


--------------------
user posted image
PM MAIL   Вверх
Fortnox
Дата 13.2.2011, 00:02 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 373
Регистрация: 31.10.2008
Где: Ростов-на-Дону

Репутация: 14
Всего: 22



Умеет:
Код

        public class SimpleClass
        {
            private int a;
            public int A
            {
                get { return a; }
                set
                {
                    a = value;
                    DoSomething(value);
                }
            }

            private void DoSomething(int val)
            {
                Console.WriteLine(val);
            }
        }

PM MAIL   Вверх
Экскалупатор
Дата 13.2.2011, 01:26 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1746
Регистрация: 1.4.2009
Где: г. Минск

Репутация: 11
Всего: 24



Fortnox, мне кажется, что Bogdan1024 хотел совсем не этого. он хотел отказатся от лишней переменной а. но мсдн в этом плане довольно однозначен:
Если требуется выполнить дополнительные операции чтения и записи применительно к значению свойства, определите поле для хранения значения свойства и затем реализуйте базовую логику для хранения и извлечения этого значения

если сделать свойство только для записи то можно и без дополнительной переменной. или можно добавить еще одно свойство которое будет хранить значение переданное в это свойство, но это по сути ничем не лучше просто переменной.
PM MAIL ICQ   Вверх
neutrino
Дата 13.2.2011, 09:51 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Т.е. имеется в виду следующее?
Код

public int A{
set{ DoSomething(value);}
}

Тогда можно.

Я полагаю тебе нужно реализовать какой-нить интерфейс/абстрактный класс, и вызвать метод - все, что тебе надо от этого свойства? Конечно ни в коем случае не надо так писать изначально.

Мне кажется я знаю что ты хочешь. Ты хочешь, использовать automatic property и в дополнение к нему просто вызвать метод DoSomething(). Так вот этого сделать нельзя. Нужно обязательно делать полную реализацию, т.е. с полем a.


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0404 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.