簡體   English   中英

對於調用其他方法的方法,我應該使用“內部”還是“私有”而不是“公共”?

[英]Should I be using “internal” or “private” instead of “public” for methods that call other methods?

在我的C#項目中,我有一些方法可以像這樣調用其他方法:

options = ReferenceUtilities.GetMenuStatuses();

在我的ReferenceUtilities中,我編寫了代碼:

   internal static SelectList GetMenuStatuses()
    {
        throw new NotImplementedException();
    }

但是我應該使用內部還是私有的? 我不確定這里的區別。

正如人們已經回答的那樣,內部意味着該成員可以被同一程序集中的其他代碼訪問。 private表示可以從同一類中的其他代碼訪問它。

但是,要添加的一個重要點:在Properties / Assemblyinfo.cs中,可以添加[assembly:InternalsVisibleTo(“ something”)]語句,該語句使您可以從其他程序集中訪問內部方法。

這對於單元測試非常有用,並且是有時使用內部而非私有的一個很好的理由。

(關於是否進行內部單元測試的爭論很大,但是很高興知道這種可能性。)

internal表示該成員可以被同一程序集中的其他代碼訪問。 private表示可以從同一類中的其他代碼訪問它。

這與該方法是否調用其他方法無關。

internal在程序集之間,而private在類之間

  • 內部:對其他程序集的代碼不可見,僅在此程序集中可見
  • 私人:其他班級不可見。 僅在此類中可見
  • public:對其他類或程序集可見[對於類]

內部意味着同一程序集中的其他類可以看到該方法。 私有意味着只有定義了方法的類才能看到它。 如果僅由定義該方法的類調用該方法,請使用private。 否則,請使用內部。 僅當程序集外部的類需要直接調用該方法時,才應使用public。

和往常一樣,也有例外,但這是一個很好的通用規則。

再進一步,服務類(即僅用於提供服務或功能的方法)應實現定義該服務或功能的合同的接口。 其他類應繞過該接口的實例,以便僅接口方法可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM