什么是"嘟m打字?"

Dav*_*fer 19 c# programming-languages

我已经看过几次提到"混淆打字",比如这个StackOverflow回答:未来版本的.NET会支持C#中的元组吗?

我用谷歌搜索了这个术语,除了一些希望C#最终会支持它的人之外,我找不到任何解释方式.

什么是嘟m打字?

Eri*_*ert 21

我不知道C#设计团队中是否有人想出这个术语,或者是否在业内其他地方使用过.我们在C#3.0中处理隐式类型的局部变量(即"var x = whatever;")时开始使用它.一个相当常见的情况是希望编译器推断部分类型,但要明确另一部分.例如,请考虑以下事项:

var list = new List<int>() { 10, 20, 30 };
Run Code Online (Sandbox Code Playgroud)

这里没有给出"list"的类型,但是给出了泛型列表的类型参数.有人想象这可以从初始化器推断:

var list = new List<???>() { 10, 20, 30 };
Run Code Online (Sandbox Code Playgroud)

这里??? 意味着"这里有一个类型参数;编译器,从上下文中找出它必须具有的内容".

我们将此称为"嘟"式键入,因为有人会将读取的代码视为"var list等于新的hrmhmrhrm列表,初始化为十,二十,三十".

我们从未实现过mumble类型,这有点不幸,因为它意味着很难列出匿名类型.为此,您可以使用" 逐个演示 "技巧.

  • @Lasse:确实,这很有效,但是创建一个数组然后将它复制到一个列表有点令人讨厌.并且存在任意多种形式为Foo <T>的通用数据结构,并且只有少量采用数组的ToFoo扩展方法.具有由开发人员部分陈述并且由编译器部分推断的类型的问题比我给出的具体示例更普遍. (4认同)