如何将nullable int转换为可空的short?

时间:2014-08-27 11:22:09

标签: c# int type-conversion nullable short

当我寻找答案时,我得到的点击是指从 int ,从可空到非可空。但是,我不知道如何从“较大”类型 int?转换为“较小”类型 short?

我能想到的唯一方法就是编写一个这样的方法:

private short? GetShortyOrNada(int? input)
{
  if(input == null)
    return (short?)null;
  return Convert.ToInt16(input.Value);
}

我希望在一行中这样做,因为它只在项目的整个代码库中完成一个地方,并且不会有任何变化。

3 个答案:

答案 0 :(得分:11)

简单演员怎么了?我测试过,效果很好。

private static short? GetShortyOrNada(int? input)
{
    checked//For overflow checking
    {
        return (short?) input;
    }
}

答案 1 :(得分:1)

您可以使用条件表达式替换条件语句,如下所示:

short? res = input.HasValue ? (short?)Convert.ToInt16(input.Value) : null;

答案 2 :(得分:1)

这就是你要找的东西吗?

private short? GetShortyOrNada(int? input)
{
  if(input == null)
    return (short?)null;
  if(input > Int16.MaxValue)
    return Int16.MaxValue;
  if(input < Int16.MinValue)
    return Int16.MinValue;
  return Convert.ToInt16(input.Value);
}

我刚刚为过大值的情况添加了IF子句。

如果您只想在值不在所需范围内时返回null:

private short? GetShortyOrNada(int? input)
{
  if(input == null || input < Int16.MinValue || input > Int16.MaxValue)
    return (short?)null;

  return Convert.ToInt16(input.Value);
}

希望这会有所帮助。