covariance

    3熱度

    3回答

    我常常忘了,如果我有定義covarient和contravarient泛型類型時使用in或out。在Java中,我有助記符PECS(生產者擴展消費者超級)來幫助我。你知道類似於c#的助記符嗎?

    5熱度

    2回答

    在通過C#第三版CLR CLR有,我似乎無法弄懂一個例子: 不變意味着該通用 類型參數不能改變。在本章中,我已經示出了 只有不變的通用類型 參數。 n 反義含義通用 類型參數可以從類 更改爲從它派生的類。在C#中,你 表明逆變泛型類型 參數與在關鍵字。 反變換泛型類型參數 只能出現在輸入位置 ,如方法的參數。 n 協變意味着通用 類型參數可以從類 更改爲其基類之一。在C#中,你的 表示covari

    7熱度

    3回答

    我很難理解爲什麼C#中的數組是協變的,並且這個協方差可以帶來什麼好處。考慮以下瑣碎的代碼示例: object[] myArray = new string[1]; myArray[0] = 1; 該代碼將編譯好的,但會毫不客氣地也許並不奇怪,在運行時發生爆炸。 如果我試圖嘗試使用泛型的相同的東西,編譯器會抱怨我,我會在早期階段意識到我的愚蠢,所以我的問題是這樣的:爲什麼C#編譯器允許與數組的

    5熱度

    4回答

    在C#4.0出來之前,我對協變和逆變很興奮。它讓我喜歡理論上的正確性!但是,現在它已經出來了,我又回到了編寫普通的,日常的,無聊的代碼,我開始懷疑:我曾經使用過它嗎?我注意到我沒有有意識地使用它。我自己定義的接口或代表都沒有從中受益。 只有一個單個案例我後來發現我在不知不覺中使用了協變,但它非常微妙,我也可能沒有注意到它。試想X是一個基類和Y是它的後代: if (enumerableOfYs.Co

    6熱度

    3回答

    很明顯,T[]陣列類型不是covariant,因爲T[]的元素可以通過索引來設置。 但是,只要U派生自T,U[]就可以轉換爲T[],而不會受到編譯器的任何抱怨。 Man[] men = new[] { new Man("Aaron"), new Man("Billy"), new Man("Charlie") }; Person[] people = (Person[])men; 在似乎me

    3熱度

    3回答

    我有多個Linq2Sql類,如「Article」「NewsItem」「Product」。 他們都有一個標題,他們都有一個唯一的ID,他們都有一個總結。 所以,我創建了一個名爲IContent public interface IContent { int Id { get; set; } String Title { get; set; } String Summar

    2熱度

    2回答

    令M的尺寸和N個樣本,比如數據矩陣數據, data = randn(N, M); 我能計算與 data_mu = data - ones(N, 1)*mean(data); cov_matrix = (data_mu'*data_mu)./N 協方差矩陣如果我使用本地MATLAB函數 cov_matrix2 = cov(data) 這將永遠等於 cov_matrix = (data_

    8熱度

    1回答

    輸入:隨機向量X = xi,i = 1..n。 X = meanxi,i = 1..n的均值向量輸出:協方差矩陣Sigma(n * n)。 輸出:協方差矩陣。 (i,j)= 1/n *(xi-meanxi)*(xj-meanxj),i,j = 1..n 2)Sigma(i,j) = cov(xi,xj),對稱矩陣。 該算法是否正確,沒有副作用?

    2熱度

    4回答

    這篇文章包含很多代碼,但是如果你花些時間閱讀和理解它,我會很感激它......並且希望能提出一個解決方案 讓我們假設我構建一個網絡遊戲,實體需要繪製,其中一些來自服務器的更新。 的Drawable類負責繪製實體在屏幕上的:與每個具體IData保持不同的性質 class Drawable { public int ID { get; set; } // I put the ID here

    3熱度

    3回答

    我正試圖在Scala中實現一個類型爲T(應該是Ordered[T])參數化的通用數據類型。具體來說,它是Sleader的持久版本& Tarjan的skew heap優先級隊列。在根據解釋here和Odersky-Spoon-Venners添加了大量複雜的類型參數聲明之後,我可以在測試/調試實際功能之前編譯錯誤。 下面是我的代碼的簡化版本。 abstract class SkewHeap[+T] {