C# 中是否有像 C 一样的指针?安全吗?

新手上路,请多包涵

我正在编写一个使用树数据结构的应用程序。我已经用 C++ 编写了它,现在我想用 C# 编写它。我使用指针来实现树数据结构。 C#中也有指针吗?使用它安全吗?

原文由 masoud ramezani 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 616
2 个回答

如果您在 C#(或 Java,或许多其他语言)中实现树结构,您将使用引用而不是指针。注意。 C++ 中的引用与这些引用不同。

用法在很大程度上类似于指针,但有垃圾收集等优点。

 class TreeNode
{
    private TreeNode parent, firstChild, nextSibling;

    public InsertChild(TreeNode newChild)
    {
        newChild.parent = this;
        newChild.nextSibling = firstChild;
        firstChild = newChild;
    }
}

var root = new TreeNode();
var child1 = new TreeNode();
root.InsertChild(child1);

兴趣点:

  • 声明成员时无需使用 * 修改类型
  • 无需在构造函数中将它们设置为 null(它们已经为 null)
  • 无特殊 -> 用于会员访问的运算符
  • 无需编写析构函数(尽管查找 IDisposable

原文由 Daniel Earwicker 发布,翻译遵循 CC BY-SA 2.5 许可协议

的。 C#中有指针。

没有。它们 不安全

当您在 C# 中使用指针时,您实际上必须使用关键字 unsafe

例如看 这里MSDN

 static unsafe void Increment(int* i)
{
    *i++;
}

Increment(&count);

改用它,代码将是安全和干净的。

 static void Increment(ref int i)
{
    i++;
}

Increment(ref count);

原文由 Pratik Deoghare 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题