首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是"mumble打字?“

什么是"mumble打字?“
EN

Stack Overflow用户
提问于 2011-04-17 11:13:28
回答 2查看 1.3K关注 0票数 19

我见过几次提到"mumble类型“,比如这个StackOverflow答案:Will a future version of .NET support tuples in C#?

我在谷歌上搜索了这个术语,除了一些人希望C#最终支持它之外,我找不到太多的解释。

什么是mumble打字?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-17 14:33:23

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

代码语言:javascript
复制
var list = new List<int>() { 10, 20, 30 };

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

代码语言:javascript
复制
var list = new List<???>() { 10, 20, 30 };

这里?意思是“这里有一个类型参数;编译器,从上下文中找出它必须是什么”。

我们称其为"mumble类型“,因为我们可以幽默地将代码理解为"var list等于用10,20,30初始化的hrmhmrhrm的新列表”。

我们从来没有实现mumble类型,这有点不幸,因为这意味着很难创建匿名类型的列表。为此,您可以使用"cast by example“技巧。

票数 21
EN

Stack Overflow用户

发布于 2011-04-17 11:38:31

我喜欢this link,它的解释就在页面末尾。基本上,我的理解是,"mumble类型“的概念是类型推断,而不必指定整个类型。现在,C# 4.0确实有匿名类型,但也有一些限制,上面的链接和here中解释了其中一些限制。

我认为C#的主要问题仍然是,当你需要命名一个类型,但你只有一个匿名类型时,没有允许你指定你需要的语法。例如,这不起作用:

代码语言:javascript
复制
List<MyObject> myList = SomeFunctionThatReturnsThisList(someParameter);
var afterTransformation = myList.Select<MyObject, var>(o => new { x = o.x, y = o.y });

不能将var指定为泛型中的类型。这是一个有点愚蠢的例子,但我希望它传达了这样一个想法,即具有匿名类型的语法结构看起来应该是可能的,但实际上并非如此。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5693503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档