c# - 除了作为访问修饰符和序列化字段之外,“公共”的统一功能是什么?
问题描述
我参考了这个视频教程并尝试了代码https://www.youtube.com/watch?v=rQyUACEyAVw&t=70s。请注意此代码public List<GameObject> Onbelt;
,如果我不将“public”一词放在前面,则永远不会分配统一警告字段,并且始终将其默认值设为 null。当我运行它时它崩溃返回一个空引用异常错误。那么public
inpublic List<GameObject> Onbelt;
初始化并统一创建 List 的新实例?List<GameObject> Onbelt;=new List<GameObject>()
因为即使没有? 如果将 public 这个词放在前面,它也不会抛出任何错误。
解决方案
不,在这种情况下,访问修饰符与变量初始化无关。
仅在公开时才显示警告的事实是由于如果您有公共字段(或 SerializedOne),则可以由编辑器分配它,但如果它是私有的,则不能,因此引擎会发出警告你关于默认值。
如果您将列表设为私有,但您将变量初始化为:
private List<GameObject> Onbelt = null;
或者
private List<GameObject> Onbelt = new List<GameObject>();
警告将消失,因为您正在强制使用默认值。
编辑:
需要明确的是,在 c# 中访问修饰符与变量初始化无关,但在 UNITY EDITOR 中,拥有一个公共变量,让用户填写此列表,因此默认情况下,使用 new List() 而不是默认 null 创建.
所以这不起作用(NullReferenceException
):
private List<int> list;
void Start()
{
list.Add(2);
}
但这将起作用:
public List<int> list;
void Start()
{
list.Add(2);
}
推荐阅读
- file - 如何在linux中根据多个代码提取行?
- javascript - 如何在 Firebase 函数中发出多个获取请求?
- javascript - Httponly cookie 未使用 Vuejs 保存在浏览器中
- mongodb - 使用 Airflow 设置 MongoDB 连接
- javascript - 通过使用Javascript单击文档正文中的任意位置来更改HTML正文的背景颜色
- python - 将特定数量的空行附加到熊猫数据框
- react-testing-library - 使用测试库进行测试时文档为空
- r - 如何在R中合并两个时间序列数据?
- java - 安装在 Windows 中的字体未在 SceneBuilder 中显示
- java - 如何在java中从地图中提取信息