• 9.5 在 C# 中使用 F# 库


    9.5 在 C# 中使用 F# 库

    像 C# 一样,F# 也是一种静态类型的语言,就是说,编译器知道每一个值的类型,以及类方法和属性的签名。对于与 C# 的互操作性来说。这是很重要的,由于,编译器能够生成代码。看起来就像普通的 .NET 库。

    与其它 .NET 语言的互操作性

    F# 和 C# 或 VB.NET 之间的互操作性是很平滑的,相比有 .NET 实现的动态类型的语言。比方 Python、Ruby、JavaScript。这些语言的编译器不知道方法所要求的參数类型。是 int,还是比方Customer,因此,使用 C# 3.0 时,要利用这些语言写的代码是比較困难的。通常,甚至不知道对象是否包括具有特定名字的方法,所以。C# 代码看应该像这样:

    obj.InvokeMethod("SayHello", newobject[] { "Tomas" });

    这个样例指定方法的名字为一个字符串。并以数组的方式传递參数值给方法。对于很多语言来说,这是一个重要的问题,所以。C# 4.0 引入了动态类型。它同意这样写:

    obj.SayHello("Tomas");

    obj.SaiHello("Tomas");

    这个语法与正常的方法调用同样。但有一个重要的差别。我们还加入还有一个方法调用。但有益用了一个不存在的方法名。这将正确编译,由于方法的名字在内部表示成字符串,就像在前面的样例一样。问题要到执行时间才会发现。F# 是静态类型的事实说明,我们不必操心出现这样的情况:我们能够依靠编译器发现类似的错误,在调用到其它 C# 代码时。

    当创建要在 C# 中使用的 F# 库,我们须要区分两种 F# 构造。

    第一种包含带成员的类或记录。它就是以标准的 C# 类出现的,使用起来没有不论什么麻烦;另外一种包含值或高阶函数,以非标准方式编译,非常难在 C# 中使用。我们先看一个第一种情况的样例。

  • 相关阅读:
    假期周进度报告02
    假期周进度报告01
    浪潮之巅阅读笔记6
    浪潮之巅阅读笔记5
    浪潮之巅阅读笔记4
    科技创新平台年报系统利益相关者分析
    浪潮之巅阅读笔记3
    浪潮之巅阅读笔记2
    浪潮之巅阅读笔记1
    Linux Redis 重启数据丢失解决方案,Linux重启后Redis数据丢失解决方
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5168549.html
Copyright © 2020-2023  润新知