当前位置:  开发笔记 > 编程语言 > 正文

C#:明确声明"不安全"/编译器选项的好处

如何解决《C#:明确声明"不安全"/编译器选项的好处》经验,为你挑选了2个好方法。

我理解指针,并且很少需要在C#代码中使用它们.我的问题是:在一段代码中明确说明"不安全"的原因是什么.另外,为什么必须更改编译器选项以允许"不安全"代码?

结论: CLR(或语言规范)中的内容使得我们不能随时使用指针(很像C和C++)而不必键入"unsafe"并更改编译器选项?

澄清一下:我知道"不安全"和"安全"的代码是什么.这只是一个问题,为什么我们必须做所有额外的工作(好吧,不是那么多)只是为了能够使用这些功能.



1> Randolpho..:

还有用C#创建者安德斯·海尔斯伯格,关于该主题触及的采访这里.基本上,正是@Marc Gravell所说的:首先是类型安全,通过明确声明不安全.

所以回答你的问题:CLR中没有任何东西阻止它; 它是一种语言习语,旨在让您在处理类型时使用安全手套.如果你想脱下手套,这是你的选择,但你必须做出积极的选择才能脱下手套.

编辑:

澄清一下:我知道"不安全"和"安全"的代码是什么.这只是一个问题,为什么我们必须做所有额外的工作(好吧,不是那么多)只是为了能够使用这些功能.

正如我所接受的采访中提到的那样,这是一个明确的设计决定.C#本质上是Java的演变,在Java中,你根本就没有指针.但设计师想要指点; 但是因为C#通常会引入Java开发人员,他们认为如果默认行为与Java类似,即没有指针,同时仍允许通过显式声明使用指针,那将是最好的.

所以"额外的工作"是故意强迫你在做之前考虑你在做什么.通过明确,它迫使你至少考虑:"为什么我这样做?当引用类型足够时,我真的需要一个指针吗?"



2> Marc Gravell..:

它主要是关于可验证的.通过陈述unsafe,手套关闭 - 系统无法再保证您的代码不会失控.在大多数情况下,非常希望留在安全区.

部分信任(插件等)会更加明显,但在常规代码中仍然很有用.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有