C 中的友元及其在C# 中的缺失
在C 中,「friend」關鍵字將類別的私有成員的存取權限授予外部類別。這允許在不影響封裝的情況下控制私人資訊的共享。然而,這個概念並沒有直接在 C# 中實現。
彌合差距:InternalsVisibleTo
C# 提供了一個名為 InternalsVisibleTo 的屬性,作為最接近「朋友」的屬性。它允許組件存取另一個組件的內部成員(包括私有成員)。這提供了有限形式的受控存取。
考慮以下場景:
要實現此目的,您可以將以下屬性放置在ClassA 的AssemblyInfo.cs 檔案:
[assembly: InternalsVisibleTo("TesterAssembly")]
將「TesterAssembly」替換為包含Tester 類別的程式集的名稱。透過這樣做,您將授予 TesterAssembly 對 ClassA 內部成員的存取權。
範例用法
為了說明其運作原理,這裡有一個簡單的範例例如:
ClassA.cs
public class ClassA { private int _privateMember; public int PublicMember { get; set; } }
Tester.cs
using ClassAAssembly; public class Tester { public void Test() { // Access private member through InternalsVisibleTo var instance = new ClassA(); instance._privateMember = 10; } }
透過應用InternalsVisibleTo 屬性,您可以在程式集層級控制內部成員(甚至私人成員)的可存取性,而無需進行託管程式碼測試向外部消費者公開敏感資料。
以上是C# 如何實現 C 的「friend」關鍵字對私有成員的受控存取的功能?的詳細內容。更多資訊請關注PHP中文網其他相關文章!