C# c语言中指针的托管数组#

C# c语言中指针的托管数组#,c#,arrays,object,pointers,managed,C#,Arrays,Object,Pointers,Managed,我在创建托管指针数组时遇到问题 我试过了 public unsafe class Car { public int speed; public Car() { speed = 0; } public Car(int speed) { this.speed = speed; } } class Program { public static unsafe void Main(string[] ar

我在创建托管指针数组时遇到问题

我试过了

public unsafe class Car
{
    public int speed;

    public Car()
    {
        speed = 0;
    }

    public Car(int speed)
    {
        this.speed = speed;
    }
}

class Program
{
    public static unsafe void Main(string[] args)
    {
        var arr = new Car[10]; // 1st way
        fixed(Car* ptr = arr)
        {}

        Car* arr = stackalloc Car[10]; // 2nd way
    }
}
在两次尝试之后,我都得到了相同的错误:“无法获得地址或大小或定义托管类型的指针”。 有人知道如何修复它吗?

嗯,比如说:

与引用(引用类型的值)不同,指针不是 由垃圾回收器跟踪垃圾回收器没有 指针及其指向的数据的知识

为此 原因不允许指针指向引用或 包含引用的结构,以及指针的引用类型 必须是非托管类型。非托管类型是非托管类型的任何类型 引用类型,不包含任何级别的引用类型字段 筑巢的方法。换句话说,非托管类型是以下类型之一:

sbyte、byte、short、ushort、int、uint、long、ulong、char、float、, 双精度、十进制或布尔值

任何枚举类型

任何指针类型。仅包含非托管类型字段的任何用户定义的结构类型


你想实现什么,为什么你认为指针是解决问题的方法?这是大学实验室的一项任务,有一辆班车,我需要创建一个10个指针的数组。你被特别要求使用指针?是的,一行有几个任务。编写返回long并获取int的函数的定义。将此任务更改为func是类Car的成员。定义Car类的10个指针数组。我知道了,所以我不能定义托管类的指针?没有办法修复它?