关键字";“不安全”-在方法或代码块之前
本文关键字:不安全 方法 代码 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我希望它能引导你朝着正确的方向前进。祝你好运