C#中有什么指针吗?

时间:2018-05-30 15:22:35

标签: c# pointers struct

我如何在C#中制作这样的作品?

我老师在C ++中的代码定义了一个对象,该对象的类型与定义此对象的结构相同,因此逻辑上要避免StackOverFlowException(对象将创建并创建其他对象),他使用指针。

但我不知道C#中的任何指针都可以做到这一点。

在C#中定义结构对象时如何避免StackOverflowException?

struct HeapNode<T>
{
    T Data;

    HeapNode<T> Right; // in C++ it would be HeapNode* Right
    HeapNode<T> Left;
}

2 个答案:

答案 0 :(得分:0)

是的,该死的肯定是C#中的指针,但这被称为不安全代码,并且在不指定时就不能使用它们,那是不安全的。

在C#7指向某些东西之前,不允许使用通用指针,但是现在允许使用通用指针,并且可以使用指针编写问题中的代码。

问题中的代码可以如下重写:

unsafe struct HeapNode<T>
{
    T* Data;

    HeapNode<T>* Right; // in C++ it would be HeapNode* Right
    HeapNode<T>* Left;
}

启用/ unsafe选项进行编译时。

请注意,我没有尝试编译而不测试代码,但这是这个想法的起点。

答案 1 :(得分:-1)

你可以使用一个类,这样你就会有引用类型。

 public class Node<T>
 {
     public Node<T> Left { get; set; } 
     public Node<T> Right { get; set; } 
     public T Data { get; set; }
 }