`short` 类型的简写? [复制]
Posted
技术标签:
【中文标题】`short` 类型的简写? [复制]【英文标题】:Shorthand for `short` type? [duplicate] 【发布时间】:2013-11-29 22:33:39 【问题描述】:您可以像这样分配十进制值:
decimal dec = 1.0m;
然后像这样浮动:
float flt = 1f;
short
是否存在类似的简写?我之所以问是因为我将 2 条短裤相乘,它默认为 int
,并且我试图避免不必要的强制转换,因为我知道结果总是和短裤一样小。
【问题讨论】:
decimal
的“速记”错误。应该是1.0m
。
“我正在努力避免不必要的演员” - ?当你必须施放时你施放....
@JohnSaunders 哎呀,谢谢
@MitchWheat 我不需要投射,答案总是小到足以放入short
,无论如何这并不能真正回答我的问题
您的“不必要的转换”将由编译器完成,因此它相当于这个“速记”。见***.com/a/166809/1659828
【参考方案1】:
您需要通过强制转换指定它是一个短值。
s3 = (short)(s1 * s2);
【讨论】:
这是因为operator *
的 C# 预定义重载不包括任何 short operator *(short, short)
重载。这就是你需要投射的技术原因。由于重载解析,“产品”的类型为int
。 但是请注意:如果您可以将结果放入原始变量之一,您可以使用不需要强制转换的*=
。示例:s1 *= s2; /* OK for shorts */
另见this "integer sum blues" answer。以上是关于`short` 类型的简写? [复制]的主要内容,如果未能解决你的问题,请参考以下文章