关键字参考

本主题包含指向所有 F# 语言关键字的信息的链接。

F# 关键字表

下表按字母顺序显示所有 F# 关键字,以及包含详细信息的相关主题的简短说明和链接。

关键字 链接 DESCRIPTION
abstract 成员

抽象类
指示在声明它的类型中没有实现或它是虚拟且具有默认实现的方法。
and let 绑定

记录

成员

约束
用于相互递归绑定和记录、属性声明以及泛型参数的多个约束。
as

模式匹配
用于为当前类对象提供对象名称。 还用于在模式匹配中为整个模式命名。
assert 断言 用于在调试期间验证代码。
base

继承
用作基类对象的名称。
begin 详细语法 在详细语法中,指示代码块的开头。
class 在详细语法中,指示类定义的开头。
default 成员 指示抽象方法的实现;与抽象方法声明一起使用来创建虚拟方法。
delegate 代表 用于声明委托。
do do Bindings

循环: for...to 表达式

循环: for...in 表达式

循环: while...do 表达式
用于循环构造或执行命令性代码。
done 详细语法 在详细语法中,指示循环表达式中代码块的末尾。
downcast 类型转换和转换 用于转换为继承链中较低类型的类型。
downto 循环: for...to 表达式 for在表达式中,在反向计数时使用。
elif 条件表达式: if...then...else 用于条件分支。 的 else if简短形式。
else 条件表达式: if...then...else 用于条件分支。
end 结构

歧视联盟

记录

类型扩展

详细语法
在类型定义和类型扩展中,指示成员定义的部分的末尾。

在详细语法中,用于指定以 begin 关键字开头的代码块的末尾。
exception 异常处理

异常类型
用于声明异常类型。
extern 外部函数 指示声明的程序元素在另一个二进制或程序集中定义。
false 基元类型 用作布尔文本。
finally 异常: try...finally 表达式 try 引入一个代码块一起使用,无论是否发生异常,都会执行这些代码块。
fixed 固定 用于在堆栈上“固定”指针,以防止垃圾回收。
for 循环: for...to 表达式

循环:for...in Expression
用于循环构造。
fun Lambda 表达式:fun 关键字 在 lambda 表达式(也称为匿名函数)中使用。
function Match 表达式

Lambda 表达式:有趣的关键字
用作 lambda 表达式中关键字和fun表达式的更短的替代方法match,该表达式在单个参数上具有模式匹配。
global 命名空间 用于引用顶级 .NET 命名空间。
if 条件表达式: if...then...else 用于条件分支构造。
in 循环:for...in Expression

详细语法
用于序列表达式,并在详细语法中将表达式与绑定分开。
inherit 继承 用于指定基类或基接口。
inline 函数

内联函数
用于指示应直接集成到调用方代码中的函数。
interface 接口 用于声明和实现接口。
internal 存取控制 用于指定成员在程序集内可见,但不在程序集外部显示。
lazy 延迟表达式 用于指定仅在需要结果时执行的表达式。
let let 绑定 用于将名称关联或绑定到值或函数。
let! 异步表达式

任务表达式

计算表达式
在异步表达式中用于将名称绑定到异步计算的结果,或者在其他计算表达式中用于将名称绑定到结果(属于计算类型)。
match Match 表达式 用于通过比较值与模式进行分支。
match! 计算表达式 用于内联调用计算表达式和模式匹配其结果。
member 成员 用于在对象类型中声明属性或方法。
module 模块 用于将名称与一组相关类型、值和函数相关联,以逻辑方式将其与其他代码分开。
mutable let Bindings 用于声明变量,即可以更改的值。
namespace 命名空间 用于将名称与一组相关类型和模块相关联,以逻辑方式将其与其他代码分开。
new 构造函数

约束
用于声明、定义或调用可创建或可以创建对象的构造函数。

还用于泛型参数约束,以指示类型必须具有特定的构造函数。
not 符号和运算符参考

约束
实际上不是关键字。 但是, not struct 组合用作泛型参数约束。
null Null 值

约束
指示缺少对象。

也用于泛型参数约束。
of 歧视联盟

代表

异常类型
用于区分联合以指示值类别的类型以及委托声明和异常声明。
open 导入声明: open 关键字 用于使命名空间或模块的内容在没有限定的情况下可用。
or 符号和运算符参考

约束
与布尔条件一起使用作为布尔 or 运算符。 等效于 ||。

也用于成员约束。
override 成员 用于实现与基本版本不同的抽象或虚拟方法的版本。
private 存取控制 限制对同一类型或模块中的代码的成员的访问。
public 存取控制 允许从类型外部访问成员。
rec 函数 用于指示函数是递归的。
return 计算表达式

异步表达式

任务表达式
用于指示作为计算表达式结果提供的值。
return! 计算表达式

异步表达式

任务表达式
用于指示计算表达式,计算时提供包含计算表达式的结果。
select 查询表达式 在查询表达式中用于指定要提取的字段或列。 请注意,这是一个上下文关键字,这意味着它实际上不是保留字,它只在适当的上下文中像关键字一样。
static 成员 用于指示在没有类型实例的情况下调用的方法或属性,或类型的所有实例之间共享的值成员。
struct 结构

元组

约束
用于声明结构类型。

用于指定结构元组。

也用于泛型参数约束。

用于模块定义中的 OCaml 兼容性。
then 条件表达式: if...then...else

构造函数
在条件表达式中使用。

还用于在对象构造后执行副作用。
to 循环: for...to 表达式 在循环中使用 for 以指示范围。
true 基元类型 用作布尔文本。
try 异常:尝试...with Expression

异常:尝试...finally 表达式
用于引入可能生成异常的代码块。 与 withfinally.
type F# 类型



记录

结构

枚举

歧视联盟

类型缩写

度量单位
用于声明类、记录、结构、区分联合、枚举类型、度量单位或类型缩写。
upcast 类型转换和转换 用于转换为继承链中较高类型的类型。
use 资源管理: use 关键字 用于需要 let 调用以释放资源的值 Dispose
use! 计算表达式

异步表达式

任务表达式
用于需要调用以释放资源的值let!,而不是Dispose在异步表达式和其他计算表达式中使用。
val 显式字段: val 关键字

签名

成员
在签名中用于指示值,或者在有限情况下在类型中声明成员。
void 基元类型 指示 .NET void 类型。 与其他 .NET 语言互作时使用。
when 约束 用于模式匹配的布尔条件(when guards),并为泛型类型参数引入约束子句。
while 循环: while...do 表达式 引入循环构造。
with Match 表达式

对象表达式

复制和更新记录表达式

类型扩展

异常: try...with 表达式

接口

性能
match 模式匹配表达式中的关键字一起使用。 还用于对象表达式、记录复制表达式、类型扩展来引入成员定义、异常处理程序、接口实现以及具有显式 getter 和 setter 的属性声明。
yield 列表数组序列 用于列表、数组或序列表达式,以生成序列的值。 通常可以省略,因为它在大多数情况下是隐式的。
yield! 计算表达式

异步表达式

任务表达式
用于计算表达式,将给定计算表达式的结果追加到包含计算表达式的结果集合中。
const 类型提供程序 类型提供程序允许使用 const 关键字将常量文本指定为类型参数参数。

以下令牌在 F# 中保留,因为它们是 OCaml 语言中的关键字:

  • asr
  • land
  • lor
  • lsl
  • lsr
  • lxor
  • mod
  • sig

如果使用 --mlcompatibility 编译器选项,则上述关键字可用作标识符。

以下令牌保留为将来扩展 F# 的关键字:

  • break
  • checked
  • component
  • const
  • constraint
  • continue
  • event
  • external
  • include
  • mixin
  • parallel
  • process
  • protected
  • pure
  • sealed
  • tailcall
  • trait
  • virtual

以下令牌曾经保留为关键字,但在 F# 4.1 中 发布 ,因此现在可以将它们用作标识符:

关键字 原因
method 用于 member 介绍方法。
constructor 用于 new 介绍构造函数。
atomic 与事务性内存 circa 2006 的时尚相关。 现在,这将是一个库定义的计算表达式。
eager 不再需要;它最初设计为 let eager 匹配潜力 let lazy
object 无需保留此项。
recursive 使用 rec
functor 如果 F# 添加了参数化模块,则使用 module M(args) = ...
measure 属性 [<Measure>] 足够。
volatile 属性 [<Volatile>] 足够。

另请参阅