C# C中是否有类似C+的指针+;?安全吗?
我正在编写一个使用树数据结构的应用程序。我用C++写的,现在我想用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声明 使用它安全吗 没有指针是不安全的 有一些安全的方法可以构造没有指针的数据结构。如果这些节点是类,那么
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