允许在项目中使用不安全的代码是否会产生后果?

时间:2019-06-25 15:10:43

标签: c# unsafe

我有一段代码必须在不安全的上下文中运行。我无法默认编译它,因为在项目设置中未选中“允许不安全代码”设置。如果打开此功能,是否会有任何不良后果?它是否会影响项目中的其余代码,例如在运行时进行一些其他检查?我想知道为什么此设置首先存在,是为了警告还是防止人们不必要地使用不安全的代码?

我的程序实际上并不需要不安全的上下文,但是我需要一个很小的地方,我很犹豫为整个项目启用它,我希望它不影响不安全的事物在非常特殊的情况下运行的一段代码。

2 个答案:

答案 0 :(得分:1)

总会有后果...但是有一种方法可以通过创建一个单独的程序集来减少允许不安全代码的影响。这样,您只需要允许新程序集使用不安全的代码,而不是为整个项目启用它即可。

答案 1 :(得分:0)

我将发表Jeroen Mostert的评论,在我看来,这是一个不错的答案:

  

包含不安全代码的程序集不会加载到部分受信任的程序集中   环境。在过去   代码访问安全性更为重要,但是即使如此,仍然存在   可能需要对装配完全信任的方案   问题。对于普通的桌面应用程序,这并不重要。的   当然,不安全代码的主要问题是代码本身;   放弃对已验证托管代码的保证就足以   证明必须切换标志。将其隔离成一个小组件   是一个选择。