これは、C#で実現したいPascalサンプルです。
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
これは、C#で実現したいPascalサンプルです。
With myBook do
Begin
Title := 'Some Book';
Author := 'Victor John Saliba';
ISBN := '0-12-345678-9';
Price := 25.5;
End;
構築する場合のみ。
var foo = new Foo
{
Title = "lol",
Author = "Som Gai",
ISBWhatever = "111"
}
VB.NETには「with」キーワードがありますが、c#にはありません。
ここで説明を見つけることができます。
抜粋:
- 読みやすさのメリットが小さいか、まったくない。読みやすさのメリットは小さいか、存在しないと考えました。with ステートメントがコードを読みにくくするとまでは言いませんが、そうする人もいるでしょう。
- 言語の複雑さの増加。with ステートメントを追加すると、言語がより複雑になります。たとえば、VB では、ローカル変数 (Text) と "with" ターゲット (.Text) のプロパティの間の潜在的なあいまいさに対処するために、新しい言語構文を追加する必要がありました。この問題を解決する他の方法も、言語の複雑さをもたらします。もう 1 つの方法は、スコープをプッシュしてプロパティでローカル変数を非表示にすることですが、エスケープ構文を追加しないとローカル変数を参照する方法がありません。
- C++ の遺産。C++ には with ステートメントがありませんでした。そのようなステートメントがないことは、C++ 開発者にとって一般的に問題とは考えられていません。また、他の変更 (人々が書いているコードの種類の変更、プラットフォームの変更、言語のその他の変更など) がより必要なステートメントで行われたとは感じませんでした。
いいえ、ありません。それは前に議論されました、そして、ほとんどの人はそれを望んでいません。
読みやすさが損なわれ、あいまいな状況が作成され、デバッグが難しくなり、IntelliSense によって利便性が大幅に相殺されます。
最後のコメントに対処するために、もちろん次のように書くことができます。
myBook.Title = "Some Book";
...