加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 什么是C中的数组^ T以及如何从数组中提取值?

发布时间:2020-12-15 21:01:51 所属栏目:百科 来源:网络整理
导读:我将一个C#对象数组传递给托管C DLL. C#类定义如下: public class LatLonPointType { public double Lat; // Latitude. public double Lon; // Longitude. } 我将一个LatLonPointTypes数组传递给托管C DLL中的函数.通过反复试验,我发现我可以使用声明为的函
我将一个C#对象数组传递给托管C DLL. C#类定义如下:

public class LatLonPointType
    {

        public double Lat;       // Latitude.
        public double Lon;       // Longitude.
    }

我将一个LatLonPointTypes数组传递给托管C DLL中的函数.通过反复试验,我发现我可以使用声明为的函数参数将其传递给C函数:

array <LatLonPointType^> ^PolygonPoints

以下C代码将提取LatLonPointType ^类型的元素.

LatLonPointType ^a = PolygonPoints[0];

我的问题是:

>我多年前使用过C,这似乎与参考声明相似. ^有一个很好的参考?
>在上面的示例中,如何将(LatLonPointType ^)转换为(LatLonPointType)值?

澄清:

如果我有:

LatLonPointType ^a = PolygonPoints[i];

我怎么会得到a.Lat和a.Lon?

我会使用a-> Lat和a-> Lon?

解决方法

根据 this answer,这个帽子角色,也就是^,创建了一个托管指针,它将被垃圾收集,不一定是你.例如,如果您要使用new创建本机对象,它将如下所示:

Object* obj = new Object();

但是,如果您要使用托管指针,则语法将更改为:

MObject^ mobj = gcnew MObject();

目前,我找不到如何将托管指针转换为对象本身,但如果要将其转换为指向该对象的非托管指针,请参阅this answer.

编辑
要访问类的成员,例如Lon,您可以这样做:

//Get method
double i = PolygonPoints[n]->Lon;
//Set method
PolygonPoints[n]->Lon = number;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读