C# C中是否有类似C+的指针+;?安全吗?

C# C中是否有类似C+的指针+;?安全吗?,c#,c++,data-structures,tree,C#,C++,Data Structures,Tree,我正在编写一个使用树数据结构的应用程序。我用C++写的,现在我想用C写。我使用指针来实现树数据结构。C#中也有指针吗?使用它安全吗 C#中也有指针吗 ,使用语法int*varName声明 使用它安全吗 没有指针是不安全的 有一些安全的方法可以构造没有指针的数据结构。如果这些节点是类,那么它们将自动成为类,这样您就不需要任何指针。否则,你可以 C#中也有指针吗 ,使用语法int*varName声明 使用它安全吗 没有指针是不安全的 有一些安全的方法可以构造没有指针的数据结构。如果这些节点是类,那么

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

C#中也有指针吗

,使用语法
int*varName声明

使用它安全吗

没有指针是不安全的

有一些安全的方法可以构造没有指针的数据结构。如果这些节点是类,那么它们将自动成为类,这样您就不需要任何指针。否则,你可以

C#中也有指针吗

,使用语法
int*varName声明

使用它安全吗

没有指针是不安全的


有一些安全的方法可以构造没有指针的数据结构。如果这些节点是类,那么它们将自动成为类,这样您就不需要任何指针。否则,您可以。

是。C#中有指针

。它们不安全

在C#中使用指针时,实际上必须使用关键字
不安全

例如,查看

改用这个,代码将是安全和干净的

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

Increment(ref count);

。C#中有指针

。它们不安全

在C#中使用指针时,实际上必须使用关键字
不安全

例如,查看

改用这个,代码将是安全和干净的

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

Increment(ref count);

如果您要用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

如果您要用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
  • 是的,有一个指针:

    维基百科:

    是的,有一个指针:


    维基百科:

    在MSDN上的.NET2中实现了大量的数据结构

    它们包括二进制搜索树、图、SkipList、NodeList等的示例代码。这些代码非常完整,包括许多关于这些结构工作原理等的文档页面

    没有一个来自微软的使用指针。一般来说,你永远不需要在C#中使用它们。有时使用它们会很好,或者它们只是你从C++中思考的方式。但是你通常可以找到一种不使用它们的方法


    不使用不安全代码作为指针的最大原因是您失去了中等信任遵从性。您不能运行像单击一次、asp.net网站这样的机制,Silverlight也不允许这样的机制。坚持使用REF和完全管理的概念,以确保您的代码可以在更多的地方运行。

    MSDN上的.Net 2中实现了大量的数据结构

    它们包括二进制搜索树、图、SkipList、NodeList等的示例代码。这些代码非常完整,包括许多关于这些结构工作原理等的文档页面

    没有一个来自微软的使用指针。一般来说,你永远不需要在C#中使用它们。有时使用它们会很好,或者它们只是你从C++中思考的方式。但是你通常可以找到一种不使用它们的方法


    不使用不安全代码作为指针的最大原因是您失去了中等信任遵从性。您不能运行像单击一次、asp.net网站这样的机制,Silverlight也不允许这样的机制。坚持引用和完全管理的概念,以确保您的代码可以在更多地方运行。

    请先在SO上搜索这些关键字,只询问尚未涉及的内容。带有指针的代码必须标记为“不安全”,猜猜原因。实际上,在任何地方使用指针都不安全;)@机器魔术师-只有当你不知道自己在做什么时才不安全(不幸的是,你通常与不知道自己在做什么的人一起工作)。这是一篇我发现很容易理解的文章。请先在SO上搜索这些关键字,然后只询问尚未涉及的内容。带有指针的代码必须标记为“不安全”,猜猜为什么。实际上,在任何地方使用指针都不安全;)@机器魔术师-只有当你不知道自己在做什么时才不安全(不幸的是,你通常与不知道自己在做什么的人一起工作)。这是一篇我发现很容易理解的文章。指针和引用之间的重要区别:后者不支持指针算法@让我们祈祷他在树结构中不使用指针算法。这个答案并没有解决实际问题。来自谷歌搜索,幸运的是其他人已经回答了这个问题…指针和引用之间的重要区别:lat