2013-02-01 44 views
0

不幸的是,C#沒有任何東西像C++的friend。因此,例如,爲了解決像經典的矩陣/向量乘法例子(其中效率可以通過結交矩陣和向量來獲得,使得每個類別可以訪問另一個類別的私有成員),我必須定義班級成員internal.NET程序集應該多大(小)?

現在我知道我自己了,不適當的封裝會遲早導致代碼混亂。因此,我想保持儘可能小的宇宙。

這將導致非常小的組件。

這是否有任何缺點,或者沒有關係?

+1

您是否假設使用公共接口很慢?我想你正在通過一些屬性/索引器訪問第i個和第j個元素。我認爲微軟JIT編譯器足夠聰明,可以內聯微不足道的屬性訪問,所以你不會購買任何東西,但破壞封裝的代碼。 –

+8

對於過於模糊,研究性能不佳的相關問題,測試始終是答案。 –

+0

另外,「不成熟的優化是萬惡之源」,對Ed? :) – Mithon

回答

2

標題中的問題的答案:組裝應該是多少?

對組件尺寸沒有特別的要求或建議。

*由於需要在更多地方查找信息,理論上可能會減慢裝配的數量(可能以千計)。

當選擇大小考慮:

  • 適當封裝
  • 便於編輯(大量的解決方案與幾大一個都具有在編譯/編輯缺點和典型應用該類超支的/部署時間)
  • 技術限制(如GAC部署,部分信任的代碼,任何CPU/x86/x64要求)
1

如果你不喜歡內部原因,它太開放了(對於你的api的其餘部分),讓那些需要對彼此開放的類包含一個單獨的微組件,其中包含這一小組類。您總是可以將該程序集嵌入到主API組件中。

這應該讓你的課程保持對彼此開放,而不是讓其他人進入(除非他們公然忽略你的組裝結構,並且把更多的東西放在你的幫手組件中,而不是它的名字意味着它應該包含。做這樣的事?!:)

1

除非我不明白:

不幸的是,C#沒有像C++的朋友什麼。

Friend Assemblies (C# and Visual Basic)確實存在。它可能不是C++所具有的,但它聽起來像是可行的。

+0

是的,但朋友班不。而且,當我認爲「內部」不夠嚴格時,朋友集會不會有所幫助。 – JohnB

+0

你需要/需要什麼類型的限制,需要一個類在組件中是私有的而不是內部的? –

相關問題