我只是注意到如果我在函数参数中传递一个诸如1的值,如果它超出int,那么它将起作用,我会假设其他的。但是,如果我做int i = value,它不会。我在想,这是什么类型的?
答案 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
,但由于存在从int
到long
的隐式转换,因此您仍然可以调用带有long
int
的方法{1}}。