私はただ興味があり、それはあまり価値がないことを知っています、しかしここにそれは行きます...
どこかでそういうものを見たことがあると思いますが、よくわかりません。
私はこのようなものを意味します:
var zero = Class.Zero;
Math
クラスを見てみましたが、ありません。
ushort.Min
また、ゼロ(0)値を取得するような符号なし値型を使用できることも知っています。それは私がここで求めているものではありません...:D
default(T
)?
int zero = default(int);
これは、特定のタイプのデフォルト値int
を表します。これは0です。ただし、実行時にデフォルト値が必要なタイプがある場合にのみ、ゼロが必要であることがすでにわかっている場合は、これを使用しないでください。
の1つと、、、などのDecimal.Zero
より複雑なタイプがいくつかあります。ただし、通常の数値タイプの場合は、を使用してください。TimeSpan.Zero
IntPtr.Zero
BigInteger.Zero
0
.Net Frameworkは、。のような値の定数を定義していません0
。0
使用したい場合は0
.Net Frameworkで定義された数値定数は、通常、特定の数値型の制限、特別な関連性を保持する値、またはゼロ値が特別な/複雑な初期化を必要とする場合を中心に展開します。例えば
リテラル0
は、ほとんどの数値タイプのこれらのカテゴリに適合しません(Decimal
1つの例外を除く)
一部の不変の参照型には、「空の」値のインスタンスが事前定義されています。たとえば、StringはString.Emptyを定義します。これは、有効な文字列(文字がない場合でも)が有効なヒープオブジェクトを参照する必要があるためですが、空の文字列変数が1000個ある場合は、それらすべてが同じヒープオブジェクトを参照する可能性があります。アプリケーションが空の文字列をまったく使用しない場合を除いて、アプリケーションの起動時に1つの空の文字列インスタンスを作成し、それを空の文字列を必要とするすべての人と共有できるようにする方が、毎回新しい空の文字列オブジェクトを作成するよりも効率的です。 1つ必要です。
値型にはそのような利点はありません。いくつかの値型定数が宣言されていますが(Math.Piなど)、それらの宣言は便宜上のものであり、効率ではありません。「myDouble=Math.Pi」と言うのは、「MyDouble = 3.14159265358979323846264338327950288419716939937510#」よりも効率的ではありません。読みやすく、検証するのも簡単です(最初の「328」が「238」と間違って入力された場合、上記のコードを見ている人は気付くでしょう)。 ?浮動小数点定数ゼロが必要な場合、最も自然で読みやすい表記は単純に0#になります。