[英]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
在類之間
內部意味着同一程序集中的其他類可以看到該方法。 私有意味着只有定義了方法的類才能看到它。 如果僅由定義該方法的類調用該方法,請使用private。 否則,請使用內部。 僅當程序集外部的類需要直接調用該方法時,才應使用public。
和往常一樣,也有例外,但這是一個很好的通用規則。
再進一步,服務類(即僅用於提供服務或功能的方法)應實現定義該服務或功能的合同的接口。 其他類應繞過該接口的實例,以便僅接口方法可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.