当我阅读C# Language Specification
时,我注意到Types section中Pointer types
没有任何内容。规范在another section中提到了Pointer types
但是我我只是想知道为什么他们没有提到Types
部分中的指针? C#
肯定支持指针类型,因此技术原因是在Types
部分没有提及它们吗?
答案 0 :(得分:3)
好的,从:
开始C# 5 specification中的 4中提到了指针。类型部分。在本章的介绍中正确:
第三类类型指针仅在不安全的代码中可用。这将在§18.2进一步讨论。
指针类型的规则与值和引用类型有很大不同,我认为这就是为什么整个章节标题为 18的原因。不安全的代码。
答案 1 :(得分:2)
指针类型不是CLR理解它的特殊类型,它只是指向另一个具体类型的指针,或者至少是void *的内存地址。
除了CLR为您提供更多控制,并要求您的代码可信并管理其自身的安全性之外;字符串和字符串之间没有区别*;在间接之后,它们都是System.String。
指针类型不是类型,它是指向类型的指针;只是CLR放弃了所有的安全检查,并假设你知道自己在做什么。
我想值得注意的是,任何传递'by-ref'(即类作为方法参数)的东西都是.Net中的指针;它们只受CLR的保护。
答案 2 :(得分:1)
我的猜测是(不知道这个事实)指针类型仅在不安全的上下文中可用(这在您链接到的MSDN页面中提到)。
内置类型的文档可能是最常见的一般用法,不包括不安全的场景(在C#中很少需要)。不过,我只是猜测,可能还有其他原因。
答案 3 :(得分:0)
可能是因为C#中的指针未经过CLR验证,文档中也提到了这一点,默认情况下C#不支持指针算法。
对我而言,在文档中单独保留托管和非托管规范更有意义。
您已经阅读了给定的链接,但在阅读此页面时仍然更有意义。 http://msdn.microsoft.com/en-us/library/t2yzs44b.aspx