C# Public? Private? protected? 比較各種修飾詞存取範圍

大多數寫程式的人應該對 PublicPrivate 等存取修飾詞不陌生
這是 C# 中常用的基礎語法之一
有一天,同事突然問我一個更深入的問題,這讓我重新思考存取修飾詞的真正用途和它們如何影響類別之間的互動
這讓我開始探討不同存取修飾詞的適用情境,進一步理解它們在程式中的重要性

基本但常忘的存取修飾詞

要怎麼讓寫的 Class 只能在自己的 Namespace 被呼叫?
頓時突然覺得自己雖然懂這些存取修飾詞,但時常還是會忘記存取範圍,還是必須Google一下

為了方便日後快速複習,我特意寫了這篇文章,並用表格整理了各個存取修飾詞的使用範圍與區別
這不僅有助於鞏固概念,還能讓自己和其他開發者在需要時快速查找相關資訊
希望通過這樣的方式,讓存取修飾詞這個相對基礎的概念變得更簡單明瞭,讓日後工作中遇到類似問題時能夠快速解決

存取修飾詞整理

修飾詞支援語言類別存取範圍成員存取範圍
PublicC#, PHP, TypeScript, C++, JAVA無限制存取無限制存取
PrivateC#, PHP, TypeScript, C++, JAVA只有自身類別可存取只有自身類別可存取
ProtectedC#, PHP, TypeScript, C++, JAVA自身類別與繼承類別皆可存取自身類別可存取,繼承類別無法存取
InternalC#相同命名空間或相同 DLL 可存取只有自身類別可存取
Protected InternalC#自身類別、繼承類別、相同命名空間皆可存取自身類別、相同命名空間與繼承類別皆可存取
Private ProtectedC# 7.2自身類別與繼承類別皆可存取自身類別可存取,繼承類別無法存取
PackageJAVA同一 Package 內可存取同一 Package 內可存取
大小寫規則GoLang大寫字母開頭相當於 Public,小寫字母開頭相當於 Private大寫字母開頭相當於 Public,小寫字母開頭相當於 Private

C# 存取範圍修飾詞 Access modifiers

Package 組件內部組件 Inside Assembly外部組件 Outside Assembly
修飾詞基礎類別繼承類別繼承成員其他類別繼承類別繼承成員其他類別
public
protected internal
internal
protected
private
private protected
(C# 7.2)
C# 存取範圍修飾詞 Access modifiers

各語言修飾詞

C#PHPTypeScriptC++JAVAGoLang
public字母大寫
private字母小寫
protected
internal
protected internal
private protected
package
各語言修飾詞

C# Access modifiers 存取範圍圖

訂閱
通知
guest
1 留言
預約回饋
查看所有留言
91
Guest
91
1 年 之前

整理的非常清楚!!謝謝!!