C#中的整数引用类型是什么?

Jon*_*ott 12 c#

我想要一个整数变量,可以设置为null,不想使用int? myVariable语法.我尝试使用int,Int16但无济于事.我必须使用int? myVariable吗?

我之所以提到这一点,是因为在Java中既有'int'类型(基元)和'Integer'(引用类型).我想确保没有我可以使用的内置整数引用类型.我会用'int?' 因为我在做什么.

Mar*_*ell 26

对于信息,int?/ Nullable<T>引用类型; 它只是一个"可空类型",意思是:一个结构(本质上和int一个bool标志),带有特殊的编译器规则(重新检查,运算符等)和CLI规则(用于装箱/拆箱).还有就是在.NET中没有"整数引用类型",除非你把拳击:

int i = 123;
object o = i; // box
Run Code Online (Sandbox Code Playgroud)

但这会产生一个不必要的对象,并且有很多相关的其他问题.

对于你想要的,int?应该是理想的.你可以使用长手语法(Nullable<int>),但IMO这是不必要的冗长,我看到它混淆了人们.

  • 恕我直言_?_混乱取决于背景 - 它混淆了红宝石人.我们正在为新手使用Nullable <T>它googlable和msdnable :) (4认同)

Ser*_*oda 8

是的你应该使用可空类型

Nullable

Nullable<int> Nullable<float> 
Run Code Online (Sandbox Code Playgroud)

或者干脆

int? float?
Run Code Online (Sandbox Code Playgroud)

PS:

如果你不想使用符号或Nullable - 只需使用特殊结构就可以了.例如DataTable:

var table = new DataTable();
table.Columns.Add('intCol',typeof(int));
var row = table.NewRow();
row['intCol'] = null; //
Run Code Online (Sandbox Code Playgroud)