2

これは、C#で実現したいPascalサンプルです。

With myBook do
 Begin
  Title  := 'Some Book';
  Author := 'Victor John Saliba';
  ISBN   := '0-12-345678-9';
  Price  := 25.5;
 End;
4

3 に答える 3

8

構築する場合のみ。

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

VB.NETには「with」キーワードがありますが、c#にはありません。

于 2009-09-08T13:10:23.133 に答える
6

ここで説明を見つけることができます

抜粋:

  • 読みやすさのメリットが小さいか、まったくない。読みやすさのメリットは小さいか、存在しないと考えました。with ステートメントがコードを読みにくくするとまでは言いませんが、そうする人もいるでしょう。
  • 言語の複雑さの増加。with ステートメントを追加すると、言語がより複雑になります。たとえば、VB では、ローカル変数 (Text) と "with" ターゲット (.Text) のプロパティの間の潜在的なあいまいさに対処するために、新しい言語構文を追加する必要がありました。この問題を解決する他の方法も、言語の複雑さをもたらします。もう 1 つの方法は、スコープをプッシュしてプロパティでローカル変数を非表示にすることですが、エスケープ構文を追加しないとローカル変数を参照する方法がありません。
  • C++ の遺産。C++ には with ステートメントがありませんでした。そのようなステートメントがないことは、C++ 開発者にとって一般的に問題とは考えられていません。また、他の変更 (人々が書いているコードの種類の変更、プラットフォームの変更、言語のその他の変更など) がより必要なステートメントで行われたとは感じませんでした。
于 2009-09-08T13:20:24.930 に答える
2

いいえ、ありません。それは前に議論されました、そして、ほとんどの人はそれを望んでいません。

読みやすさが損なわれ、あいまいな状況が作成され、デバッグが難しくなり、IntelliSense によって利便性が大幅に相殺されます。

最後のコメントに対処するために、もちろん次のように書くことができます。

myBook.Title = "Some Book";
...
于 2009-09-08T13:15:50.023 に答える