我想要一个整数变量,可以设置为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<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)