0
概括地說,我試圖讓這段代碼的工作:轉換爲普通
class it<X>
{
X[] data;
int pos;
public Y get<Y>()
{
return (Y) data[pos];
}
}
基本上,我有很多不同的基本類型數組,需要處理的另一個地方是不同的圖元。前面的代碼不會編譯,因爲編譯器不知道X和Y是什麼。下面,確實,但是:
public Y get<Y>()
{
return (Y) (object) data[pos];
}
然而,然後我得到的運行時異常,如:
InvalidCastException: Cannot cast from source type to destination type.
it[System.Double].get[Single]()
這似乎愚蠢的,因爲C#顯然有花車和雙打(與其他原語)之間的轉換。我猜它與拳擊等有關,但我對C#很陌生,所以我不知道 - 我想我已經習慣了C++模板。請注意,X和Y之間的轉換總是存在 - 我可以通過某種方式告訴編譯器嗎?
我知道這是一個很好的例子,但您應該嘗試遵循[C#命名指南](https://msdn.microsoft.com/en-us/library/xzf533w0%28v=vs.71%29。 ASPX)。 '得到'應該是'Get','它'應該是'It '。也不是命名指導的一部分,但在我個人看來私人領域應該在'_'之前加上'_data'和'_pos',所以你可以告訴他們除了方法參數之外。 –
感謝您的輸入。儘管一如既往,大型項目中的人員和代碼之間的一致性往往是首選。 – Shaggi