为什么C#语言规范没有提到指针类型?

时间:2014-02-19 03:02:47

标签: c# pointers types

当我阅读C# Language Specification时,我注意到Types sectionPointer types没有任何内容。规范在another section中提到了Pointer types但是我我只是想知道为什么他们没有提到Types部分中的指针? C#肯定支持指针类型,因此技术原因是在Types部分没有提及它们吗?

4 个答案:

答案 0 :(得分:3)

好的,从:

开始
  • 第一个链接指向2003年的规格。它有点旧。
  • 第二个链接不是规范,它是一个编程指南?

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