2009-06-02 8 views
1

関数のパラメータに1などの値を渡しても、int、long、それ以外を仮定するとうまくいきます。しかし、もし私がint i = valueなら、それはdoesntです。私は不思議だった、どんなタイプですか?C#ではどのような型が整数リテラルですか?

+0

コード例と、表示されているエラーを提供できますか? –

答えて

4
(1).GetType().ToString() //is System.Int32 
+0

完成のために、元のポスターにはおそらく「L」、「U」、「UL」の例が必要なのでしょうか? :) – jerryjvl

0

私が理解しているように、コンパイラはコンパイル時に型ヒントを使用してリテラルの型を判断します。

0

タイプが決定されます。

あなたはこの機能を持っている場合:

public void SomeFunc(long i); 

を、あなたはこのようにそれを呼び出す:

SomeFunc (1); 

そして、C#は、長いものとして、この '1' が表示されます。

3

あなたは(それが目標をオーバーフローしないと仮定した場合)、それはターゲット型であるかのようにそれ以外の値が暗黙的に解釈され、型が明示的にするためにリテラル整数をサフィックスすることができます。

var myLong = 123L; 
var myInt = 123; 
var myByte = (byte)123; // i'm not aware of a suffix for this one 

// unsigned variants 
var myULong = 123UL; 
var myUInt = 123U; 
+0

バイトサフィックスに関しては、あなたの「意識不明」は十分に確立されています。 o) –

4

integer literals specificationを見てみましょう:

次のように整数リテラルの型は が決定されます。

  • リテラルは、接尾辞を持っていない場合は、それが最初のを持っていますこれらの型では、 の値をint、uint、long、ulongで表すことができます。
  • リテラルにUまたはuの接尾辞が付いている場合は、これらの型の最初のものが であり、その値はuint、ulongで表されます。
  • リテラルにLまたはlの接尾辞が付いている場合、その値の最初のものは で、長さはulongです。
  • リテラルにUL、UL、UL、UL、LU、LU、IU、またはIUの接尾辞が付いている場合、 はulongタイプです。
+2

あなたのアバターを愛している(あるいはそれが表す音)。良い答えも:o) –

+0

ポルカパンの木は素晴らしいです:) –

0

整数リテラルは、デフォルトあたりintですが、intからlongへの暗黙の変換がありますから、あなたはまだintlongを取るメソッドを呼び出すことができます。

関連する問題