C Sharp中「friend」關鍵字的等效含義是什麼?C Sharp中「friend」關鍵字的等效含義是什麼?
如何使用'internal'關鍵字?
我讀過'internal'關鍵字是C#中'friend'的替代品。
我在我的C#項目中使用了一個DLL,我有源代碼,但我不想修改現有的代碼。我繼承了這個類,我可以用我想要的方式使用我的繼承類。問題是父類中的大部分代碼都有受保護的方法。以某種方式使用朋友可以訪問或調用這些受保護的方法嗎?
C Sharp中「friend」關鍵字的等效含義是什麼?C Sharp中「friend」關鍵字的等效含義是什麼?
如何使用'internal'關鍵字?
我讀過'internal'關鍵字是C#中'friend'的替代品。
我在我的C#項目中使用了一個DLL,我有源代碼,但我不想修改現有的代碼。我繼承了這個類,我可以用我想要的方式使用我的繼承類。問題是父類中的大部分代碼都有受保護的方法。以某種方式使用朋友可以訪問或調用這些受保護的方法嗎?
可以使用關鍵字訪問修飾符internal
聲明一個類型或類型成員只在同一組件代碼訪問。
您可以使用System.Rutime.CompilerServices
中定義的InternalsVisibleToAttribute
類將類型聲明爲僅在相同程序集或指定程序集中的代碼可訪問。
爲你使用任何其他access modifier如private
您使用第一個。即:
internal class MyClass {
...
}
你使用第二如下:
[assembly:InternalsVisibleTo("MyFriendAssembly", PublicKey="...")]
internal class MyVisibleClass {
...
}
這兩個可以正確地被認爲是friend
在C#中的等價物。
方法protected
已經可用於派生類。
1)Internal是VB.NET '朋友' 的關鍵字的C#equivelant,因爲你已經猜到(而不是替代)
2)用法如下
internal void Function() {}
internal Class Classname() {}
internal int myInt;
internal int MyProperty { get; set; }
3 )它基本上是一個訪問修飾符,它規定標記爲內部的類/函數/可擴展/屬性的可訪問性好像它被彙編到其中的大會是公共的,並且對於任何其他程序集是私有的
內部是相等的很多朋友。受保護的方法只能在同一個類或繼承者中使用。如果您試圖從繼承者公開受保護的方法,則可以將它們包裝在公共方法中。
您的子類將能夠訪問您繼承的類的受保護成員。
您是否希望將這些受保護的成員授予其他課程?
否,「內部」是不一樣的「朋友」(至少C++「朋友」)
朋友指定這個類是僅由一個可訪問的,特定類。
internal指定該類可由程序集中的ANY類訪問。
這不等同,但它*是一組類在一起工作而不暴露於世界其他地方的機制。它還鼓勵較小的模塊,並減少類之間的「意大利麪條」關係。 – 2017-10-10 17:26:41
請澄清這個問題,因爲VB和C都有好友關鍵字。 C#中的C關鍵字沒有相同之處 – 2009-01-15 03:17:14