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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Аналог with...do... в C#, Delphi -> C# 
:(
    Опции темы
kemiisto
Дата 4.2.2008, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



В Delphi есть удобный оператор для доступа к членам объекта - оператор with.

Пример:
Код

with TreeViewQuestion.Items.Add(nil, 'Caption') do
begin
  ImageIndex := 0;
  ...
end;


Пытаюсь найти аналог в C#, пока безуспешно...  smile 

Помогите! 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
QryStaL
Дата 4.2.2008, 13:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Intellectual feast
**


Профиль
Группа: Участник
Сообщений: 914
Регистрация: 30.11.2005

Репутация: 10
Всего: 32



Нету такого...


--------------------
I don't need a reason being who I am...
PM MAIL ICQ   Вверх
mr.DUDA
Дата 4.2.2008, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



В бейсике есть такая фигня. В шарпе можно объявить переменную, присвоить значение и обращаться через точку.


--------------------
user posted image
PM MAIL WWW   Вверх
kemiisto
Дата 4.2.2008, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Код

TreeNode root = treeView1.Nodes.Add("Проект");
root.ImageIndex = 1;
root.Nodes.Add("Вопросы");


Что-то в этом роде? 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
mr.DUDA
Дата 4.2.2008, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



Цитата(kemiisto @  4.2.2008,  13:02 Найти цитируемый пост)
Что-то в этом роде? 

Ага smile


--------------------
user posted image
PM MAIL WWW   Вверх
kemiisto
Дата 4.2.2008, 20:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



mr.DUDA, спасибо!  smile 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
KLUBS
  Дата 4.2.2008, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: нет
Всего: 1



Может: 
Код

using(...) 
{
  ......
}



или это совсем не то????
PM MAIL ICQ Skype   Вверх
kemiisto
Дата 4.2.2008, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Не то! Судя по тому, что пишет Шилдт эта конструкция применима к объектам, реализующим интерфейс IDisposable и нужна для того, чтобы гарантировать вызов Dispose() при выходе из такого блока. По ходу можно применят как альтернативы try/catch/finally. Если я правильно понял...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
duk
Дата 5.2.2008, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



Цитата(kemiisto @  4.2.2008,  21:41 Найти цитируемый пост)
 По ходу можно применят как альтернативы try/catch/finally. Если я правильно понял...

Скорее всего, что ты не правильно понял.   try/catch/finally для обработки исключений, а использованиии using, как ты сам сказал, для освобождения ресурсов, при выходе из блока.
PM MAIL   Вверх
kemiisto
Дата 5.2.2008, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



Цитата

Скорее всего, что ты не правильно понял.


Ну вот читаем у Andrew Troelsen'a:

При обработке, управляемых объектов, реализующих интерфейс IDisposable, вполне типичным будет использование методов структурированной обработки: исключений, чтобы гарантировать вызов метода Dispose даже при возникновении исключительных ситуаций в среде выполнения

Код

static void Main(string[]  args)
{
    MyResourceWrapper  rw = new MyRescureeWrapper (I ;
    try
    {
        //Использование членов rw
    }
    finally
    {
        //Dispose() вызывается всегда, есть ошибки или нет
        rw.Dispose();
    }
}


Этот пример применения технологии "безопасного программирования" прекрасен, но реальность такова, что лишь немногие разработчики готовы мириться с перспективой помещения каждого типа, предполагающего освобождение ресурсов, в рамки блока try/catch/finally только для того, чтобы гарантировать вызов метода Dispose(). Поэтому для достижения того же результата в С# предусмотрен намного более удобный синтаксис, реализуемый с помощью ключевого слова в using.

Код

static void Main(string[]  args) 
{
    //Dispose() вызывается автоматически при выходе за пределы
    //области видимости using,
    using (MyresourceWrapper rw = MyResourceWrapper())
    {
    //Использование объекта rw.
    }
}


Если с помощью ildasm.exe взглянуть на CIL-код метода Main(), то вы обнаружите, что синтаксис using на самом деле разворачивается в логику try/finally с ожидаемым вызовом Dispose ().
(с) Andrew Troelsen


Отсюда и вывод, что using можно применят как алтернативу try/catch/finally для объектов, реализующих IDisposable чтобы гарантировать вызов Dispose() при выходе из соответствующего блока.

Так?

Это сообщение отредактировал(а) kemiisto - 5.2.2008, 19:01


--------------------
PM MAIL WWW GTalk Jabber   Вверх
duk
Дата 7.2.2008, 00:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Some Object
*


Профиль
Группа: Участник
Сообщений: 179
Регистрация: 19.7.2007

Репутация: нет
Всего: 4



kemiisto, это разные вещи, здесь finally используется для того, чтоб гарантировать освобождение ресурсов в любом случае, даже если произошла исключительная ситуация, а using это просто синтаксический наворот, который делает код более наглядным и удобным. 

Согласись, что использование обработки исключений в данном случае странно смотрится, особенно если (например) ни один метод  класса не может генерировать перехватываемых исключений.

Это сообщение отредактировал(а) duk - 7.2.2008, 00:58
PM MAIL   Вверх
kemiisto
Дата 7.2.2008, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

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



duk, кажется я начинаю понимать! Спасибо, что объяснил.

 smile Тяжело пишет господин Troelsen... imho, конечно, но тяжело... Трудно читается, да к тому же (судя по всему) еще и переводчики "постарались"... 


--------------------
PM MAIL WWW GTalk Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

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


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

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


 




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


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

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