Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net-转换或转换装箱字节?,短?还是int?到int?_C#_.net_Casting_Int_Nullable - Fatal编程技术网

C# .Net-转换或转换装箱字节?,短?还是int?到int?

C# .Net-转换或转换装箱字节?,短?还是int?到int?,c#,.net,casting,int,nullable,C#,.net,Casting,Int,Nullable,如果我有一个对象引用一个字节?、短?或int?,有没有办法无条件地将该对象引用强制转换或转换为int?没有为每个案例编写单独的代码 例如: byte? aByte = 42; // .. or aByte = null object anObject = aByte; //... var anInt = (int?)anObject //As expected, doesn't work 我会使用: 请注意,当您将int?、short?或byte?放入框中时,您总是会得到一个空引用或一个装箱的

如果我有一个
对象
引用一个
字节?
短?
int?
,有没有办法无条件地将该对象引用强制转换或转换为int?没有为每个案例编写单独的代码

例如:

byte? aByte = 42; // .. or aByte = null
object anObject = aByte;
//...
var anInt = (int?)anObject //As expected, doesn't work
我会使用:

请注意,当您将
int?
short?
byte?
放入框中时,您总是会得到一个空引用或一个装箱的不可空值-没有“装箱的可空值”这样的东西

Convert.ToInt32
将适用于您提到的所有装箱类型-尽管它也适用于字符串“42”等。这有问题吗?

我会使用:

var i = (anObject as IConvertible).ToInt32(null);
请注意,当您将
int?
short?
byte?
放入框中时,您总是会得到一个空引用或一个装箱的不可空值-没有“装箱的可空值”这样的东西


Convert.ToInt32
将适用于您提到的所有装箱类型-尽管它也适用于字符串“42”等。这是问题吗?

对不起,但您所说的“无条件强制转换”是什么意思?我的意思是“无论它是什么-字节短还是int,将其转换为int”对不起,但您所说的“无条件强制转换”是什么意思“不管它是什么-字节短还是int,请将其转换为int“记住,他是在处理可空项。如果
anObject
为null,这将抛出。我猜这是一个可以为null的类型的原因,原因是它可能为null,在这种情况下,我们的代码会崩溃up@AnthonyPegram,它不适用于这个问题。你为什么会这样想?它之所以适用,是因为他在问题和示例中明确使用了可空类型。他的特定代码示例使用42这一事实并不否定他的代码正在处理装箱的
byte?、short?、int?
,等等。好的,我稍微更改了示例,记住他正在处理空值。如果
anObject
为null,这将抛出。我猜这是一个可以为null的类型的原因,原因是它可能为null,在这种情况下,我们的代码会崩溃up@AnthonyPegram,它不适用于这个问题。你为什么会这样想?它之所以适用,是因为他在问题和示例中明确使用了可空类型。他的特定代码示例使用42这一事实并不否定他的代码正在处理装箱的
byte?,short?,int?
,等等。对,我稍微改变了示例,当装箱一个包含空值的
null
时,结果对象==null?@BorisB.:是的。(结果引用-没有涉及对象。)@BorisB自己试试,
ReferenceEquals((int?)null,null)
返回true。因此,当装箱一个包含null值的
null
时,结果对象==null?@BorisB.:是。(结果引用-没有涉及任何对象。)@BorisB自己试试,
ReferenceEquals((int?)null,null)
返回true。
var i = (anObject as IConvertible).ToInt32(null);