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# 中使用。我们先看一个第一种情况的样例。
最新文章
- Android系统的五种数据存储形式(一)
- Linux课程实践一:Linux基础实践(基础操作)
- 使用PHP获取网站Favicon的方法
- 关于js的call()和apply()两个函数的一点个人看法
- HTML+CSS编写规范
- Groovy选型
- css 背景图片拉伸[转]
- C++中的函数指针和指针函数
- 笔记整理——Linux下C语言正则表达式
- jQuery源码学习:Sizzle
- python 爬取w3shcool的JQuery的课程并且保存到本地
- node.js的安装及配置
- RSA算法原理——(3)RSA加解密过程及公式论证
- 如何为Rails作贡献:例增加rich_text field generators
- SpringBoot内置Tomcat缓存文件目录被意外删除导致异常
- [leetcode]256. Paint House粉刷房子(三色可选)
- 利用StopWatch类监控Java代码执行时间并分析性能
- this.class.getClassLoader().getResourceAsStream与this.class.getResourceAsStream
- dp之多维背包hdu2159
- php魔术方法__SET __GET
热门文章
- SPRING源码分析:IOC容器
- Cocos2d-x 3.0rc0版本号项目的创建和部署
- Android系统匿名共享内存Ashmem(Anonymous Shared Memory)在进程间共享的原理分析
- Docker image 镜像介绍
- 基于ADODBX对数据库的CURD
- CLR via C# - Char_String
- android——仿微拍贷滑动圆形菜单
- Fix an “Unapproved Caller” SecurityAgent Message in Mac OS X
- Ngui _CD技能特效
- 关于DCLP实现的单例模式的一些想法