gpt4 book ai didi

c# - 将 int 转换为 short 的更好方法? (如果不可能则为 NULL)

转载 作者:行者123 更新时间:2023-11-30 13:47:53 25 4
gpt4 key购买 nike

我有以下两种将 int 转换为 short? 的方法。

  1. 如果值不在短范围内,第一个失败。
  2. 第二种方法可行,但它有一个不必要的到字符串的转换

有没有更好的方法?

编辑:

来自下面的答案:

Int16 is just a subset of Int32 so you do not need any conversion to "intermediate" types.

代码

//Approach 1
int vIn = 123456789;
short? vOut = Convert.ToInt16(vIn);
//Value was either too large or too small for an Int16.

//Approach 2
short? vOut2 = null;
int vIn2 = 123456789;
short number;
string characterRepresentationOfInt = vIn2.ToString();
bool result = Int16.TryParse(characterRepresentationOfInt, out number);
if (result)
{
vOut2 = number;
}

引用:

  1. Java: Conversion from int to short

最佳答案

为什么不能简单地使用强制转换的内置转换?只需添加一个检查以确保它没有超出范围(如果您想要一个 null 值而不是异常)。

short? ConvertToShort(int value)
{
if (value < Int16.MinValue || value > Int16.MaxValue)
return null;

return (short)value;
}

关于您的方法:

  1. 它(当然)有效,但您永远不会得到 null 值,如果 value 超出 的有效范围,转换可能会失败Int16.

  2. 速度非常慢。不要忘记 Int16 只是 Int32 的一个子集,因此您不需要任何转换为​​“中间”类型。

关于c# - 将 int 转换为 short 的更好方法? (如果不可能则为 NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15025254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com