这是一个比看上去要复杂得多的问题。
我能找到的每一个讨论访问修饰符的Unity视频和教程都告诉我“private
是C#中成员变量的默认访问修饰符",但according to the C# documentation默认访问修饰符应该是internal
。
- 例如,这段官方视频,时间戳到演讲者说:https://youtu.be/_0oBLCJcpCs?t=224
- 例如,Unity Answers上的此问题,其中批准的答案表示默认值为
private
:https://answers.unity.com/questions/1252048/private-vs-no-access-modifier-c.html - 例如,在这个论坛线程中,回答者说C#中的默认访问修饰符是
private
,* 引用了一个文档页面,该页面说不是这样!* https://forum.unity.com/threads/c-method-access-modifer.156749/
所以,问题是,这里发生的事情的真实故事是什么?如果我不在Unity脚本中的变量上放置访问修饰符,它 * 确实 * 是私有的,但Unity是如何做到这一点的呢?不知何故,我在网上找不到解释。
另请参阅Unity Answers上的this unanswered question。
1条答案
按热度按时间7lrncoxx1#
我想你对这里的范围感到困惑:members(字段和方法)的默认访问修饰符是
private
,而 classes 和 interfaces 的默认访问修饰符是internal
。这是因为类不能被声明为private(这意味着它们只在自身中可见,这没有意义)。内部类(类中的类)是个例外,但对于这些类,单独的默认规则适用。总是为所有对象显式声明访问修饰符是一种很好的方式。