【发布时间】:2012-07-11 01:29:59
【问题描述】:
为什么第一个和第二个 Write 可以工作,而最后一个不行?有没有一种方法可以允许所有 3 个并检测它是 1、(int)1 还是我传入的?真的为什么允许一个但最后一个?第二个被允许但不是最后一个真的让我大吃一惊。
using System;
class Program
{
public static void Write(short v) { }
static void Main(string[] args)
{
Write(1);//ok
Write((int)1);//ok
int i=1;
Write(i);//error!?
}
}
【问题讨论】:
-
我也被这个难住了,我经常不得不在函数调用中将 int 转换为 short,尽管它们应该是可转换的......
-
@MathieuDumoulin 它们是可施放的,这就是您可以施放它们的原因。但这是一种有损转换(有很多 int 不适合short),所以不可能进行隐式转换,这就是为什么你必须写
(short) i。
标签: c# compiler-errors int type-conversion implicit-conversion