关键字参考

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

F# 关键字表

下表按字母顺序显示了所有 F# 关键字,并提供了简要说明和包含更多信息的相关主题的链接。

关键字 链接 描述
abstract 成员

抽象类
表示一种方法,该方法在进行声明的类型中没有任何实现,或该方法为虚拟方法且包含默认实现。
and let 绑定

记录

成员

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

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

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

循环: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 表达式
用于循环构造。
fun Lambda 表达式:fun 关键字 用于 Lambda 表达式,也称为异步函数。
function Match 表达式

Lambda 表达式:fun 关键字
用作 fun 关键字和 Lambda 表达式中对单个参数进行模式匹配的 match 表达式的较短替代项。
global 命名空间 用于引用顶级 .NET 命名空间。
if 条件表达式:if...then...else 用于条件性分支构造。
in 循环:for...in 表达式

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

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

任务表达式

计算表达式
在异步表达式中用于将名称绑定到异步计算的结果,或者在其他计算表达式中用于将名称绑定到计算类型的结果。
match Match 表达式 用于通过比较值与模式来进行分支。
match! 计算表达式 用于内联对计算表达式的调用,并对其结果进行模式匹配。
member 成员 用于声明对象类型中的属性或方法。
module 模块 用于将名称与一组相关类型、值和函数关联,从逻辑上将其与其他代码分开。
mutable let 绑定 用于声明变量,即,可更改的值。
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 异常:try...with 表达式

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



记录

结构

枚举

可区分联合

类型缩写

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

异步表达式

任务表达式
代替 let! 用于异步表达式和其他计算表达式中需要调用 Dispose 来释放资源的值。
val 显式字段:val 关键字

签名

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

对象表达式

复制和更新记录表达式

类型扩展

异常:try...with 表达式
在模式匹配表达式中与 match 关键字配合使用。 此外,也用于对象表达式、记录复制表达式和类型扩展,以引入成员定义和异常处理程序。
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 与 2006 年左右掀起的事务性内存热潮有关。 现已被库定义的计算表达式取代。
eager 不再需要;它最初设计为 let eager,用于匹配可能的 let lazy
object 无需保留。
recursive 使用 rec
functor 如果 F# 添加了参数化模块,我们将使用 module M(args) = ...
measure 属性 [<Measure>] 足够。
volatile 属性 [<Volatile>] 足够。

另请参阅