现在的位置: 首页 > 综合 > 正文

C# 特殊关键字 const readonly extern unsafe

2018年06月07日 ⁄ 综合 ⁄ 共 1000字 ⁄ 字号 评论关闭

readonly 关键字与 const 关键字不同。const 字段只能在该字段的声明中初始化。readonly 字段可以在声明或构造函数中初始化。因此,根据所使用的构造函数,readonly 字段可能具有不同的值。另外,const 字段是编译时常量,而 readonly 字段可用于运行时常量,如此行所示:public
static readonly uint l1 = (uint)DateTime.Now.Ticks;


extern 修饰符用于声明在外部实现的方法。extern 修饰符的常见用法是在使用 Interop 服务调入非托管代码时与 DllImport 属性一起使用;在这种情况下,该方法还必须声明为 static,如下面的示例所示:

[DllImport("avifil32.dll")]
private static extern void AVIFileInit();
Note注意

extern 关键字还可以定义外部程序集别名,使得可以从单个程序集中引用同一组件的不同版本。有关更多信息,请参见外部别名(C# 参考)

将 abstract(C# 参考)和 extern 修饰符一起使用来修改同一成员是错误的。使用 extern 修饰符意味着方法在
C# 代码的外部实现,而使用 abstract 修饰符意味着在类中未提供方法实现。




unsafe 关键字表示不安全上下文,该上下文是任何涉及指针的操作所必需的。有关更多信息,请参见不安全代码和指针(C# 编程指南)

可以在类型或成员的声明中使用 unsafe 修饰符。因此,类型或成员的整个正文范围均被视为不安全上下文。例如,以下是用 unsafe 修饰符声明的方法:

        unsafe static void FastCopy(byte[] src, byte[] dst, int count)
{
    // Unsafe context: can use pointers here.
}

不安全上下文的范围从参数列表扩展到方法的结尾,因此指针在以下参数列表中也可以使用:

        unsafe static void FastCopy ( byte* ps, byte* pd, int count ) {...}

还可以使用不安全块从而能够使用该块内的不安全代码。例如:

        unsafe
{
    // Unsafe context: can use pointers here.
}

若要编译不安全代码,必须指定 /unsafe 编译器选项。无法通过公共语言运行库验证不安全代码。

抱歉!评论已关闭.