6

私はただ興味があり、それはあまり価値がないことを知っています、しかしここにそれは行きます...

どこかでそういうものを見たことがあると思いますが、よくわかりません。

私はこのようなものを意味します:

var zero = Class.Zero;

Mathクラスを見てみましたが、ありません。

ushort.Minまた、ゼロ(0)値を取得するような符号なし値型を使用できることも知っています。それは私がここで求めているものではありません...:D

4

4 に答える 4

12

default(T)?

int zero = default(int);

これは、特定のタイプのデフォルト値intを表します。これは0です。ただし、実行時にデフォルト値が必要なタイプがある場合にのみ、ゼロが必要であることがすでにわかっている場合は、これを使用しないでください。

于 2011-04-25T15:50:59.367 に答える
10

の1つと、、、などのDecimal.Zeroより複雑なタイプがいくつかあります。ただし、通常の数値タイプの場合は、を使用してください。TimeSpan.ZeroIntPtr.ZeroBigInteger.Zero0

于 2011-04-25T15:53:44.557 に答える
5

.Net Frameworkは、。のような値の定数を定義していません00使用したい場合は0

.Net Frameworkで定義された数値定数は、通常、特定の数値型の制限、特別な関連性を保持する値、またはゼロ値が特別な/複雑な初期化を必要とする場合を中心に展開します。例えば

  • Int32.Max
  • Int32.Min
  • Double.NaN

リテラル0は、ほとんどの数値タイプのこれらのカテゴリに適合しません(Decimal1つの例外を除く)

于 2011-04-25T15:51:21.777 に答える
2

一部の不変の参照型には、「空の」値のインスタンスが事前定義されています。たとえば、StringはString.Emptyを定義します。これは、有効な文字列(文字がない場合でも)が有効なヒープオブジェクトを参照する必要があるためですが、空の文字列変数が1000個ある場合は、それらすべてが同じヒープオブジェクトを参照する可能性があります。アプリケーションが空の文字列をまったく使用しない場合を除いて、アプリケーションの起動時に1つの空の文字列インスタンスを作成し、それを空の文字列を必要とするすべての人と共有できるようにする方が、毎回新しい空の文字列オブジェクトを作成するよりも効率的です。 1つ必要です。

値型にはそのような利点はありません。いくつかの値型定数が宣言されていますが(Math.Piなど)、それらの宣言は便宜上のものであり、効率ではありません。「myDouble=Math.Pi」と言うのは、「MyDouble = 3.14159265358979323846264338327950288419716939937510#」よりも効率的ではありません。読みやすく、検証するのも簡単です(最初の「328」が「238」と間違って入力された場合、上記のコードを見ている人は気付くでしょう)。 ?浮動小数点定数ゼロが必要な場合、最も自然で読みやすい表記は単純に0#になります。

于 2011-04-25T15:58:05.767 に答える