在C#中,什么类型是整数文字?

时间:2009-06-02 07:41:45

标签: c# integer

我只是注意到如果我在函数参数中传递一个诸如1的值,如果它超出int,那么它将起作用,我会假设其他的。但是,如果我做int i = value,它不会。我在想,这是什么类型的?

6 个答案:

答案 0 :(得分:4)

(1).GetType().ToString() //is System.Int32

答案 1 :(得分:4)

查看integer literals specification

  

整数文字的类型是   确定如下:

     
      
  • 如果文字没有后缀,则其中包含第一种类型   它的值可以表示为:int,uint,long,ulong。
  •   
  • 如果文字后缀为U或u,则它具有第一种类型   其值可以表示为:uint,ulong。
  •   
  • 如果文字后缀为L或l,则它具有第一种类型   其值可以表示为:long,ulong。
  •   
  • 如果文字后缀为UL,U1,uL,ul,LU,Lu,lU或lu,则   是ulong类型。
  •   

答案 2 :(得分: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;

答案 3 :(得分:0)

据我了解,编译器将使用type-hinting在编译时确定文字的类型。

答案 4 :(得分:0)

确定类型。

如果你有这个功能:

public void SomeFunc( long i );

你这样称呼它:

SomeFunc (1);

然后C#会将这个'1'视为一个长的。

答案 5 :(得分:0)

默认情况下,整数文字为int,但由于存在从intlong的隐式转换,因此您仍然可以调用带有long int的方法{1}}。