どうすればSystem.float
、System.int
および他のプリミティブ型は機能しますか?プリミティブ構造体を作成する方法が理解できなかったため、独自の数値型を作成できるかどうか疑問に思いました。
ほとんどすべてがそうであるように、Common Language Infrastructure(CLI)をターゲットとするC#コンパイラについて話していると仮定すると、基本的にはCLIによって公開されるプリミティブ型を使用します。
考慮すべきサポートには、実質的に3つのレベルがあります。
System.Decimal
。これはalso Common Type System(CTS)の一部です。つまり、C#でconst decimal
を作成しても、たとえばVBでそれを使用できます。しかし、まだ直接的なものはありません[〜#〜] il [〜#〜]サポート。BigInteger
などのその他の数値タイプ-これらの独自の数値タイプを作成できます。2番目の箇条書きの中点により、C#は10進リテラルと10進定数を持つことができますが、3番目の箇条書きではどちらも使用できません。たとえば、BigInteger
には言語サポートがないため、次のように書くことはできません。
// This isn't valid
BigInteger bigInteger = 123456789012345678901234567890;
代わりに、文字列表現を解析する必要があります。同様に、const BigInteger
を使用することはできません。
(理論的には、C#ではサポートされているがCTSではサポートされていない型を持つことは可能です。そのような型は知りません。)
int
やfloat
などのプリミティブ型はプロセッサによって直接サポートされており、.netプラットフォームと言語にも同様の組み込みサポートがあります。そのため、言語レベルで独自のプリミティブを作成する方法はありません。