-4

現時点では、C# には null 非許容型などはありません。他の機能と同様に、開発に時間とお金がかかることは明らかです。質問はありません。しかし、私はそれを持つことで多くの利点を見ることができます. 最も明白なものの 1 つは、null チェックの必要性を排除し、null 参照例外の可能性をほとんどまたはまったく残さないことです。私が正しいとすれば、この機能を C# に追加するにはコストがかかりすぎる根本的な問題があるのでしょうか? もしそうなら、それは何ですか?

4

2 に答える 2

2

言語 (および CLR) を修正することも 1 つの方法ですが、主要な部分は、.NET Framework 全体をすべてのライブラリに書き直すことです。これにより、null を期待またはチェックするすべての既存のコードが壊れてしまいます。ライブラリを書き換えないという選択肢は、書き換えを正当化するメリットがほとんどありません。

今日のライブラリの一部がジェネリック型を処理しないのと同じです。

ちなみに、Anders Hejlsberg は、C# の設計について後悔していることの 1 つとして、これについて言及しています。

于 2012-11-07T20:42:43.900 に答える
0

C#には、参照によるオブジェクトが存在しますが、存在しません。参照用ではないオブジェクトは、整数、バイト、浮動小数点数、ブール値などです。このオブジェクトの場合、初期値を設定する必要があります。また、デフォルト値があります。不明な場合は、default()関数を使用して取得できます。それ。一方、参照オブジェクトがあり、ほとんどがc#オブジェクト(クラス)であり、デフォルト値はnullです。

オブジェクトTのコレクションがあるとします。コレクションをいくつかのアイテムで初期化すると、すべてのアイテムがnull(デフォルト値)になります。他のデフォルトタイプを使用すると、他の問題が発生する可能性があります。たとえば、それがデフォルト値?、またはオブジェクトが他のオブジェクトに固有の場合、デフォルト値(親または彼自身)をどのように定義しますか?、...、新しい追加を提案するときに定義する必要があることがたくさんありますプログラミング言語の機能。

この回答が、物事をもう少し明確にするのに役立つことを願っています...

于 2012-11-07T20:55:56.657 に答える