2012-03-12 91 views
7

行,所以我明白離子VB6,在類封裝的屬性可以屬於三種類別之一:是什麼公共財產,朋友和公共變量在VB6的區別

  • 公共財產
  • 朋友
  • 公共變量

的是這之間的區別,以及如何做這些比較公共和私人性質的更現代的語言如C#?

+3

呃,你忘了私人財產。無論如何,通過閱讀手冊可以很容易地回答這個問題。 – Bob77 2012-03-12 22:22:30

回答

9

範圍預選賽PublicFrienddetermine不同項目中的客戶端是否可以看到該項目。

  • Public項目將是客戶端代碼訪問在其它項目 ,並在同一個項目代碼。
  • Friend項目只能在同一個項目中編碼,而不是以在其他項目中編碼。
  • Private只有在同一課程中才可以訪問這些項目。

屬性公共變量不同的,因爲性能可以當客戶端獲取或設置值執行自己的代碼。 編輯以下Deanna的評論:還要注意,變量可以通過ByRef傳遞給一個函數,並且更改將按預期工作。屬性不屬於這種情況。

NB C#可能更現代化,但恕我直言,VB6處理屬性和公共變量是significantly better比.Net處理。

  • 在VB6中,您可以將公共變量更改爲屬性而不會破壞客戶端。你甚至不需要重新編譯它們。 Not true in .Net。
  • 在VB6中,公共變量可以與數據綁定一起使用。 Not true in .Net。
  • 在VB6中,公共變量可以與接口一起使用。 Not true in .Net。

恕我直言,微軟公司在.Net中的屬性和公共領域之間產生了一個真正的設計錯誤。不服氣?在第一次發佈.Net之後,C#VB編譯器被修改爲支持automatically implemented properties。這些允許您只用一行代碼創建屬性,以便稍後可以在get/set上添加邏輯而不會導致問題。恕我直言,這證明公共變量應該與屬性無法區分。


1假設你的項目類型實際上允許通過其他項目(即的ActiveX DLL,OCX或ActiveX EXE)使用你的類。
2在Property Get,Property LetProperty Set程序中。

+0

在VB6中,在類中定義的公共變量作爲屬性編譯在封面下。這可以通過使用諸如OLE View之類的工具在編譯後檢查dll來查看。它們與您提到的「自動實施的屬性」相同。 – tcarvin 2012-03-12 20:39:52

+0

對不起,當我看到「在VB6中,您可以將公共變量轉換爲屬性而不會破壞客戶端」我認爲這可能給OP帶來的印象是VB6在公開變量中有公共變量。 – tcarvin 2012-03-13 11:50:22

+1

另請注意,變量可以通過ByRef傳遞給函數,並且更改將按預期工作。屬性不屬於這種情況。我期望這就是爲什麼他們被分成.NET/IL中的字段和屬性的原因。 – Deanna 2012-03-13 12:52:20

2
  • 公共表示它可以被任何其他類別訪問 拒絕您的項目/ dll。
  • 朋友意味着它是你的彙編內 任何其他類訪問(所以只有exe文件所做的 類)

變量和財產的allmost相同。物業是首選,因爲你可以設置,如果其它類可以設置或獲取變量(屬性封裝了可變)

在C#中是一樣的,只有你用內部,而不是朋友

1

私有財產是我們和其他家庭成員使用的財產。但是,公共財產是我們社區,社會或國家所有人使用的財產。

+0

這種簡單的比喻,但我認爲它很好地描述了它。 – 2016-08-11 04:36:42