2009-09-08 4 views

ответ

6

Здесь вы можете найти объяснение here.

Выдержки:

  • Малый или несуществующим читаемость. Мы думали, что преимущества чтения были небольшими или вообще не существовали. Я не пойду так далеко, чтобы сказать, что оператор with делает код менее удобочитаемым, но некоторые люди, вероятно, будут.
  • Повышенная сложность языка. Добавление оператора with сделает язык более сложным. Например, VB должен был добавить новый синтаксис языка, чтобы устранить потенциальную двусмысленность между локальной переменной (Text) и свойством «with» target (.Text). Другие способы решения этой проблемы также включают сложность языка. Другой подход заключается в том, чтобы надавить область и заставить свойство скрыть локальную переменную, но тогда нет никакого способа ссылаться на локальный, не добавляя некоторый синтаксис escape.
  • C++ наследия. У C++ никогда не было предложения с выражением, и отсутствие такого утверждения обычно не рассматривается разработчиками C++. Кроме того, мы не чувствовали, что другие изменения - изменения в виде людей, которые пишут код, изменения в платформе, другие изменения в языке и т. Д. - сделаны с более необходимыми заявлениями.
8

только при строительстве.

var foo = new Foo 
{ 
    Title = "lol", 
    Author = "Som Gai", 
    ISBWhatever = "111" 
} 

VB.NET имеет ключевое слово «с», но C# этого не делает.

+1

Обратите внимание, что это доступно только в C# 3.0 и более поздних версиях. –

+1

Спасибо, но я не хочу создавать новый объект. – ni5ni6

+1

Нет эквивалента. Вы можете делать это только при инициализации нового объекта. – Will

2

Нет, нет. Это обсуждалось раньше, и большинство людей этого не хотят.

Ударяет читаемость, создает неоднозначные ситуации, делает отладку более сложной, и ее удобство в значительной степени компенсируется IntelliSense.

Для решения Вашего последнего комментария, вы можете, конечно, пишут:

myBook.Title = "Some Book"; 
... 
+0

Или это будет случай, когда C# будет похож на VB.NET, и все люди, которые притворяются, что они слишком умны для VB.NET, будут обмануты. – t3rse

+0

Но какая огромная разница в том, чтобы настроить реквизит при конструировании, но не смог установить их потом ...? – ni5ni6

+0

ni5ni6, этот последний комментарий о readonly или частных полях, он не имеет ничего общего с __With__. –

 Смежные вопросы

  • Нет связанных вопросов^_^