gpt4 book ai didi

C#:显式声明 "unsafe"/编译器选项的好处

转载 作者:太空狗 更新时间:2023-10-29 18:03:16 25 4
gpt4 key购买 nike

我理解指针并且很少需要在 C# 代码中使用它们。我的问题是:必须在代码块中明确声明“不安全”背后的原因是什么。此外,为什么必须更改编译器选项以允许“不安全”代码?

底线:CLR(或语言规范)中的内容使得我们不能在需要时随时使用指针(很像 C 和 C++)而不必键入“不安全”和更改编译器选项?

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

最佳答案

C# Creator Anders Hejlsberg 的采访谈到了这个主题 here .基本上,正是@Marc Gravell 所说的:类型安全第一,显式声明不安全。

所以回答你的问题:CLR 中没有任何东西阻止它;这是一种语言习语,旨在让您在处理类型时戴上安全手套。如果你想脱掉手套,这是你的选择,但你必须主动选择脱掉手套。

编辑:

For clarification: I know what "unsafe" and "safe" code is. It's just a question of why must we do all the extra work (ok, not THAT much extra) just to be able to use these features.

正如我链接的采访中提到的,这是一个明确的设计决定。 C# 本质上是 Java 的演变,而在 Java 中,您根本没有指针。但是设计师希望允许指针;然而,由于 C# 通常会引入 Java 开发人员,因此他们认为如果默认 行为与 Java 类似,即没有指针,同时仍允许通过显式声明使用指针,那将是最好的。

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

关于C#:显式声明 "unsafe"/编译器选项的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/607159/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com