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# 中使用。我们先看一个第一种情况的样例。
9.5 在 C# 中使用 F# 库的更多相关文章
- Linux中的动态库和静态库(.a/.la/.so/.o)
Linux中的动态库和静态库(.a/.la/.so/.o) Linux中的动态库和静态库(.a/.la/.so/.o) C/C++程序编译的过程 .o文件(目标文件) 创建atoi.o 使用atoi. ...
- 在Linux中创建静态库.a和动态库.so
转自:http://www.cnblogs.com/laojie4321/archive/2012/03/28/2421056.html 在Linux中创建静态库.a和动态库.so 我们通常把一些公用 ...
- 如何恢复SQL Server 中的Master库
如何恢复SQL Server 2005中的Master库 2011-05-10 16:34 Vegas Lee 博客园 我要评论(0) 字号:T | T master库对于SQLServer来说, ...
- 在Linux中创建静态库和动态库
我们通常把一些公用函数制作成函数库,供其它程序使用. 函数库分为静态库和动态库两种. 静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库. 动态库在程序编译时并不会被连接到目标代码中 ...
- 在Linux中创建静态库和动态库 (转)
我们通常把一些公用函数制作成函数库,供其它程序使用.函数库分为静态库和动态库两种.静态 库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库.动态库在程序编译时并不会被连接到目标代码中,而 ...
- Lua 中的string库(字符串函数库)总结
(字符串函数库)总结 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-11-20我要评论 这篇文章主要介绍了Lua中的string库(字符串函数库)总结,本文讲解了string库 ...
- 利用Python中的mock库对Python代码进行模拟测试
这篇文章主要介绍了利用Python中的mock库对Python代码进行模拟测试,mock库自从Python3.3依赖成为了Python的内置库,本文也等于介绍了该库的用法,需要的朋友可以参考下 ...
- MVC4学习之官方教程中迁移版本库报错
因工作需要,学习MVC4,但是微软官方教程中迁移版本库步骤在本地测试报错 官方教程地址:http://www.asp.net/mvc/overview/older-versions/getting-s ...
- Python圈中的符号计算库-Sympy(转载)
<本文来自公众号“大邓带你玩python”,转载> import math math.sqrt(8) 2.8284271247461903 我们看看Python中结果 math.sqrt( ...
随机推荐
- 年底小回顾(MVC+NHibernate+Jquery+JqueryUI——网站)
1.附:利用MVC+NHibernate+Jquery+JqueryUI这些技术可以做出一个比较好的前台+后台网站.下面是本人对这些技术的笔记,作为私人年底小结吧.呵呵 好久没写文章了,感觉下不了笔吐 ...
- Oracle-nomount/mount/open
通常所说的Oracle Server主要由两个部分组成:Instance和Database.Instance是指一组后台进程(在Windows上是一组线程)和一块共享内存区域:Database是指存储 ...
- 网络基础知识HTTP(1) --转载
为什么要写网络? 作为网站开发人员,你所开发的软件产品最终是要在网络上运行的.这就像一个生产商,要生产供给东北地区的产品,而生产商对东北的天气.地理.人文毫无了解.生产商的产品肯定是不可用的,或者低端 ...
- js获取 input file 图片缩略图
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 上传图片预览,支持IE6
//说明:图片上传预览插件 //上传的时候可以生成固定宽高范围内的等比例缩放图 //参数设置: //width 存放图片固定大小容器的宽 //height 存放图片固定大小容器的高 //imgDiv ...
- asp.net缓存(三)
Asp.net应用程序数据缓存 System.Web.Caching 命名空间提供用于缓存服务器上常用数据的类.此命名空间包括 Cache 类,该类是一个字典,您可以在其中存储任意数据对象,如哈希表和 ...
- Ngui _CD技能特效
using UnityEngine;using System.Collections; public class Skill : MonoBehaviour { public float coldTi ...
- Unity脚本——Csharp
打印输出: Debug.Log(""); 游戏流程函数: Awake():在对象被创建的时候调用. Start():在Awake()方法之后执行.在脚本禁用后不会执行. updat ...
- _BLOCK_TYPE_IS_VALID错误
_BLOCK_TYPE_IS_VALID宏用来检测这个内存块在当前堆上是否有效,但是这里的指针是一个临时变量,临时变量是在栈上分配的,函数清理栈时会自动回收这些内存,程序员无需管理. new 和 ma ...
- postman接口测试工具3.0版本的坑
今天用postman接口测试工具3.0版本被坑,找了半天,原来postman这个新版本有个坑啊 下面的get参数,第一行不管你填不填,都是无效的,可能是postman的一个bug吧