关键字";“不安全”-在方法或代码块之前

本文关键字:不安全 方法 代码 quot 关键字 | 更新日期: 2023-09-27 18:26:03

在方法之前或代码块之前使用关键字unsafe有什么区别吗?

当我只有几行不安全的代码和数百个安全的代码时,如果我使用before方法,这会是错误的吗?

关键字";“不安全”-在方法或代码块之前

这是一个主观的答案,但我会在方法级别上使用unsafe,如下所示:

private unsafe int MyFunc ( ... )
{
    ...
}

当您在函数体中使用unsafe时,它是隐藏的,很难找到,而类似的东西应该非常明显。每个人都会阅读函数声明,但不是每个人都能进入函数体,除非他们需要

声明中包含unsafe使其更加突出。

要回答您的第一个问题:请参阅C#4.0规范章节:18.1

C#的不安全特性仅在不安全的上下文中可用。一不安全上下文是通过在一种类型或成员的声明,或通过使用不安全的声明:

•类、结构、接口或委托的声明可能包括一个不安全的修饰符,在这种情况下,它的整个文本范围类型声明(包括类、结构或接口)被认为是不安全的上下文。

•声明字段、方法、属性、事件、索引器、运算符、实例构造函数、析构函数或静态构造函数可能包含不安全的修饰符,在这种情况下,该成员的整个文本范围声明被认为是不安全的上下文。

•不安全声明允许在块中使用不安全的上下文。整个关联块的文本范围被认为是不安全的上下文

第二个问题:根据第一个问题的结论,这当然是没有错。但我更喜欢用unsafe语句包装几行不安全的代码,因为它更清晰、更容易找到。

不安全代码允许您直接寻址内存,因此它可能有优缺点。我通过这篇文章对你的问题做了一些解读:http://www.codeproject.com/Articles/2363/Unsafe-programming-in-C我希望它能引导你朝着正确的方向前进。祝你好运