6.6 类型推断

728 篇文章 1 订阅
17 篇文章 0 订阅

6.6 类型推断

 

    我们曾经讨论过值的类型推断,看到了在 C# 3.0 中用 var 关键字,在 F#中用 let 绑定。我们将从本节开始,另一个方面是由 C# 和 F# 共享的。当在 C# 中调用泛型方法时,如 Option.Some(清单 5.9)或 Option.Map(清单 6.13),可以显式指定类型参数值,像这样:

 

var dt = Option.Some(DateTime.Now);
var nt = dt.Map(d => d.Year);

 

    这太冗长了,我们几乎从来不用这样的风格写代码,在前面的例子中,因为, C# 会为泛型方法调用执行类型推理。它可以自动推断类型参数值,因此,在上一例子中,我们可以只写成

 

dt.Map(d => d.Year)。

 

    在 C# 中的类型推理的过程是非常复杂的,但它工作得很好,通常,在隐私级别上理解它,并不重要。如果你真的需要详细信息,可以在 C# 语言规范 [ECMA 2006] 或深入 C# [Skeet 2008] 中找到完整的文档。类型参数值是从正常的方法的参数值推断的,用匿名函数来获得特殊的处理,使整个过程更顺畅。另外要注意,在 C# 3.0 中,参数的顺序并不重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值