什么是打字纪律?

What is typing discipline?

维基百科谈论 C# 打字纪律:

static, dynamic, strong, safe, nominative, partially inferred

什么是打字纪律?这些术语的含义以及它们与语言的关系如何?

维基百科上的类型规则指的是 C# 使用的类型系统(只需尝试单击 link,它将引导您进入 Type System 文章)。

至于他们的意思:

static - 类型在编译时确定(编译器想在运行前知道类型)

dynamic - 类型在运行时确定(在 C# 中,这是通过 C# 4.0 中引入的 dynamic 关键字实现的)

safe - 该语言不允许您违反它的类型规则。例如,如果没有定义转换,就不能将字符串放入复杂类型列表中。

strong - 与其不好解释,不如看看 Eric Lippert 关于该主题的文章 here

nominative - 类型的名称用于确定类型等价性(这意味着具有相同字段但名称不同的两个类型被视为不同类型)

partially inferred - 编译器可以在编译时猜测你所引用的类型(这是 c# 中的 var 关键字,它允许你不在你的代码中指定类型,尽管它仍然是在编译时以静态和强大的方式确定的)