c#中指向根类型类的指针

本文关键字:指针 类型 | 更新日期: 2023-09-27 17:53:35

我对c#有点陌生,不知道如何为我定义的类类型实现指针接口。用c++(虽然我上大学后就没这么做过)或C(我一直这么做)做起来超级容易,但我在c#中很难不出错。

在示例中更清楚。假设您想实现一个家谱:

class person{
   person* mom;
   person* dad;
   string Name;
   string Birthdate;     
   person[] children;

//...constructors, destructors, methods etc...
}

VS2010告诉我"不能声明一个指向托管类型的指针"我不想知道这种问题的良好实现(因为我将使结构非常自定义,而不是像树一样),只是如何声明指针指向包含指针的类型的对象(在c#中)这样使用类是错误的吗?

c#中指向根类型类的指针

删除指针,您的代码将正常工作。在c#中,类已经是引用了,不存在值class这样的东西,这个结构叫做struct

您不需要将它们声明为指针,就像类型一样:

class person{
   person mom;
   person dad;
   string Name;
   string Birthdate;     
   // Though I would probably use ICollection<Person> or IList<person>
   person[] children;
   //...constructors, destructors, methods etc...
}

因为person是一个引用类型,这就是你所需要的。

一般来说,c#中不需要指针(尽管您可以在标记为unsafe的代码中使用它们)。

当你有一个class类型的变量时,它自动成为一个引用。c#中的引用的行为与c++中的指针非常相似,只是不能对其进行算术运算。

与c++不同,声明变量时不需要使用引用/值,而是声明类型时。作为引用或值类型是类型的固有属性。

嗯…在c#中,你不需要指针(来做到这一点)。如果你的目的是创建一个"树",只需删除类型名称前面的"*"符号。

希望能有所帮助。

c#代码不使用指针。虽然c#可以编写使用指针的代码,但这种代码被称为"不安全",因此在普通代码中使用该特性的理由很少(如果有的话)。

任何。net语言中的所有类都被称为"引用类型"。这意味着无论您在代码中看到在变量、成员或参数类型中使用该类型的地方,该对象的值都是指向该类型的实例引用(因为没有更好的术语)。换句话说,它们的功能与指针非常相似,尽管只是在最基本的意义上(例如,不存在"引用算术"这样的东西)。

长话短说,只要从你的声明中删除星号,你的代码就会像你最初想要的那样工作。虽然你的代码有一些风格上的问题。. NET代码通常是pascalcase,而不是camelcase,并且最好不要直接暴露成员变量,而是使用属性),这应该会让您了解。