如果我做一個空的測試類:C#編譯器在打印「顯式轉換」時的含義是什麼?
public class Foo
{
}
我嘗試用這種說法來編譯代碼:
Foo foo = "test";
然後我得到這個錯誤的預期:
不能隱將類型'字符串'轉換爲'ConsoleApplication1.Foo'
但是,如果我改變的Foo
聲明從類接口,錯誤修改本(重點煤礦):
無法隱式轉換類型 「字符串」到「ConsoleApplication1.Foo」。 的顯式轉換存在(你 缺少強制轉換?)
這是什麼「顯式轉換」這是應該存在?
更新:這個問題比我最初想象的更微妙。要重現它,把這個代碼放在一個新的控制檯應用程序在Visual Studio 2008:
namespace ConsoleApplication1
{
class Foo
{
}
interface IFoo
{
}
class Program
{
static void Main(string[] args)
{
Foo b = "hello";
}
}
}
Visual Studio將在此點自動顯示正確的錯誤(你構建代碼之前)。現在插入「I」將「Foo」變成「IFoo」並且等待幾秒鐘,而不用建造。 「顯式轉換」版本的錯誤現在將自動出現在錯誤輸出窗口和工具提示中,用於分配錯誤。
錯誤的錯誤然後再次消失,當您明確地點擊F6生成。
值得注意的是,顯示在錯誤列表不是輸出(建)窗口此錯誤。 – gingerbreadboy 2010-03-26 16:25:20
我仍然沒有看到編輯後代碼的錯誤,您是否有任何加載項或特殊設置? – 2010-03-26 16:40:44
你有什麼VS插件運行?我無法在VS2008 SP1,Win XP SP3 x32中重現此問題。在兩種情況下,我都會得到預期的錯誤。 FWIW,我也在運行ReSharper 5.0RC編輯:Ron擊敗了我! :) – 2010-03-26 16:46:55