几周前我决定开始学习Unity(以及C#一起学习)。我是一名资深的WEB开发者/程序员,主要使用Swift、TypeScript、Python和PHP。 我必须说,我对C#的非chalantnull处理感到惊讶。其他语言都不同。让我们来看一个基本的例子,事件: c# public event EventHandler OnMeow; 首先,我发现事件实际上是null,直到分配任何监听器。 这是为了性能原因吗?为了触发事件,我们调用Invoke()方法: c# OnMeow.Invoke(this, EventArgs.Empty); // 这是错误的,但编译器不介意 除此之外,由于OnMeow可以是null,当没有附加监听器时会触发错误。因此,我们使用?.运算符: c# OnMeow?.Invoke(this, EventArgs.Empty); // 这是正确的 我真的不喜欢null不被明确处理。它会引起麻烦和边缘案例中的错误。其他语言在这种情况下使用可空类型,因此无法忘记null的可能性。 每当我学习一门编程语言时,我都会发现一些奇怪的地方。 一方面,书籍和教程告诉你某些东西非常重要,但另一方面,另一种语言完全忽略它。 接口是一个好例子,很多语言都非常迷信它,而Python根本就没有接口,而且仍然有大量的应用程序是用Python写的。 是的,Python并不是严格类型的默认设置,但这不是我的问题。 我说的是,即使Python的类型系统决定跳过接口。 那么谁是正确的——那些对接口(或null处理)迷信的人,还是那些设计了一种语言,实质上在大规模上忽略了一个模式的人? 有时我真的感到困惑。 C#中的所有类型安全都是为了什么,当它忽略了一个基本概念null安全时? 有时我感到迷惑于那些设计选择和优先级。bonus问题——Unity现在是否可以配置为处理null?
C# 中的 null 在C#中,null是一个特殊的值,表示一个对象或变量的值为空。它可以用在变量、属性、方法的参数和返回值中。 null的定义 在C#中,null是定义在System namespace中的一个特殊值。它的定义如
评论 (0)