Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Аналог with из VB и Delphi в С#


Автор: Idsa 15.2.2007, 11:22
Есть ли в C# операция, аналогичная по функциональности VBшной и Дельфийской with?

Автор: ivashkanet 15.2.2007, 11:39
Idsa, это когда называешь объект, а потом можешь обращаться к его полям и методам без указания имени объекта?

Нет. А зачем? 
Я вот не вижу никакой целесообразности этой фичи. 
Чисто для тех кому лень писать название объекта  smile 

Автор: mr.DUDA 15.2.2007, 12:34
Согласен с ivashkanet.

Автор: Idsa 15.2.2007, 16:31
Цитата(mr.DUDA @  15.2.2007,  12:34 Найти цитируемый пост)
Согласен с ivashkanet.

А я вот не очень smile
Цитата(ivashkanet @  15.2.2007,  11:39 Найти цитируемый пост)
Чисто для тех кому лень писать название объекта  

Лень ленью, а скорость разработки от этого тоже зависит. Думаю, такая фишка не помешала бы.

Автор: ivashkanet 15.2.2007, 16:43
Цитата(Idsa @  15.2.2007,  15:31 Найти цитируемый пост)
Лень ленью, а скорость разработки от этого тоже зависит.

Насмешил  smile (без обид только).

Оновное время уходит на создание концепции функциональности и ее отладки , а не на вбивание кода.

Если уж лень ввбивать код полностью, то 
1) Есть IntelliSense (набрал чуть-чуть --- набераешь Ctrl + J или Ctrl + пробел и выбираешь).
2) Ну сохрани название объекта в буфер обмена, а потом вставляй. Все быстрее будет, чем писать 
Код
with someObject
{


}

Автор: Idsa 15.2.2007, 16:59
Цитата(ivashkanet @  15.2.2007,  16:43 Найти цитируемый пост)
Насмешил   (без обид только).Оновное время уходит на создание концепции функциональности и ее отладки , а не на вбивание кода.

Это для серьезных проектов. А есть проекты попроще, где как раз-таки основное время занимают формочки-кнопочки и их обработка.
Цитата(ivashkanet @  15.2.2007,  16:43 Найти цитируемый пост)
2) Ну сохрани название объекта в буфер обмена, а потом вставляй. Все быстрее будет, чем писать...

Тест времени проводить будем? Аля .NET vs Java smile

P. S. На самом деле ты меня не убедил smile. Использовать эту возможность или нет - твое право. Однако я не вижу объективных причин для исключения этой возможности из языка. В VB.NET она есть, и никто не жалуется smile 

Автор: ivashkanet 15.2.2007, 17:04
Цитата(Idsa @  15.2.2007,  15:59 Найти цитируемый пост)
Однако я не вижу объективных причин для исключения этой возможности из языка.

А я не вижу для включения
Цитата(Idsa @  15.2.2007,  15:59 Найти цитируемый пост)
 В VB.NET она есть, и никто не жалуется

Но многие и не пользуются (я например)
 smile 

Автор: Idsa 15.2.2007, 17:08
Итого: на вкус и цвет... Вопрос исчерпан.

Автор: skyboy 15.2.2007, 17:17
Цитата(Idsa @  15.2.2007,  15:59 Найти цитируемый пост)
В VB.NET она есть, и никто не жалуется

Не жалуются, потому как знающие не используют, а остальные просто не доросли до ситуаций, когда колизия имен вызывает труднопонимаемые сообщения об ошибках. вот, положим сделаем так:
Код

procedure TForm1.OnCreate(Sender: Tobject);
with Panel1 do
begin
 //.... тут  куча кода для затруднения поиска
 with Button1 do
  Left:= 25;
 // .... тут тоже куча кода
end;

Вот скажи мне, к чему относится "Left:= 25": к кнопке, как самому ближнему объекту с этим свойством, к панели, потому что тоже в его блоке with или к форме, потому как все это описано в методе формы и Self указывает как раз на форму? 
хочешь себе такой "головняк"? я вот не хочу. и ivashkanet не хочет. подавно его не хочет 
mr.DUDA, хоть он и не особо многословен. зачем такое надо - вообще не понимаю. тем более, при том, что практически все мало-мальски "живые" IDE имеют автозавершение кода  smile 

Автор: Idsa 15.2.2007, 17:22
Ладно, уговорили smile

Автор: Exception 17.2.2007, 16:01
With позволяет сделать более читабельным код инициализации объекта - а ля
Код

with MyButton
{
    .Text = "bla";
    .AnotherProperty = something;
    /// ...
}


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

P.S. Из C# 3.0:

Код

Button myButton = new Button () { Text = "bla",
            AnotherProperty = something };

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)