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个指针数组。我知道了,所以我不能定义托管类的指针?没有办法修复它?