Kre*_*dns 43 .net c# pointers coding-style unsafe
你应该在C#代码中使用指针吗?有什么好处?它是由The Man(微软)推荐的吗?
nzp*_*mad 36
来自"男人"本人:
在C#中很少使用指针,但有些情况需要它们.例如,在以下情况下,使用不安全的上下文来允许指针是有保证的:
不鼓励在其他情况下使用不安全的上下文.
具体来说,不应该使用不安全的上下文来尝试在C#中编写C代码.
警告:
使用不安全上下文编写的代码无法验证是否安全,因此仅在代码完全受信任时才会执行.换句话说,不安全的代码不能在不受信任的环境中执行.例如,您无法直接从Internet运行不安全的代码.
Ed *_* S. 21
如果必须的话.
假设您需要对大灰度图像进行假彩色,例如2000x2000像素.首先使用GetPixel()和编写'安全'版本SetPixel().如果有效,那么继续前进吧.如果证明太慢,你可能需要得到构成图像的实际位(为了示例,忘记颜色矩阵).使用不安全的代码并没有"坏",但它增加了项目的复杂性,因此只应在必要时使用.
Jon*_*eet 12
我不记得曾经这样做过 - 但我没有做太多的互操作.这是最常见的应用程序,我相信:调用本机代码.很少有几次使用指针允许你优化一些代码,但在我的经验中这是非常罕见的.
如果它是任何指南,我认为自己在C#中非常有经验,但如果我不得不做任何不安全的代码,我必须查阅spec/books/MSDN来指导我.当然会有很多人对不安全的代码感到满意,但不熟悉(比如说)查询表达式......
我想说的主要问题是: -
我相信还有更多可以添加到列表中的内容; 一般来说,正如其他人所说的那样 - 除非你必须通过p/invoke调用一个非托管方法,这需要一些特殊的指针功能.即使这样,编组人员也会主要阻止对它的需要.
除非必要,否则"男人"也会说避免.
哦,顺便说一句关于在MSDN上固定的好文章.