从共享 ArrayPool 中租用和返回 C# 中的多维数组的正确方法?

     2023-04-13     193

关键词:

【中文标题】从共享 ArrayPool 中租用和返回 C# 中的多维数组的正确方法?【英文标题】:Correct way of Renting and Returning a multi-dimensional array in C# from shared ArrayPool? 【发布时间】:2021-07-17 18:43:14 【问题描述】:

例如,这是正确的使用场景吗?

// Rent
var rentedArray = ArrayPool<int[]>.Shared.Rent(2);

rentedArray[0] = ArrayPool<int>.Shared.Rent(10);
rentedArray[1] = ArrayPool<int>.Shared.Rent(10);

// Return
foreach (var array in rentedArray)

    ArrayPool<int>.Shared.Return(array, true);


ArrayPool<int[]>.Shared.Return(rentedArray, true);

【问题讨论】:

@Dalorzo 抱歉,我不太明白你在问什么?一般来说,从共享 ArrayPool 中租用和返回多维数组是这样完成的吗? 你读过field manual吗? @NicholasHunter 是的,我有,我只是想确保这是租用多维数组的正确方法。 您的代码是正确的,关于如何使用API​​来租用和返回数组正在使用中。 @mm8 这就是我想知道的,谢谢。 【参考方案1】:

就如何使用 API 租用和返回数组而言,您的代码是正确的。

您使用Rent API 租用具有最小指定长度的数组,将其存储在一个变量中,然后使用Return API 返回相同的数组。

【讨论】:

我有点困惑,但是返回锯齿状数组不会也返回其他数组吗?如果我可以要求一个特定的用例:想象你必须在一个数组中填充数据 10 次 - 你会租用并返回 10 次数组,还是租一次,然后清理它9 次?谢谢mm8。 不,您只租用并归还特定实例。出租、使用、清洁、归还。【参考方案2】:

为了澄清术语,这通常称为“锯齿状数组”或数组数组。

例如:

int[][] jaggedArray = new int[2][];
jaggedArray[0] = new int[10];
jaggedArray[1] = new int[10];

与俗称的“多维数组”对比:

int[,] dimensionalArray = new int[2,10];

看起来 ArrayPool 类只处理一维数组,所以你的锯齿状数组方法可能是你想要的。

代码将不太清楚..考虑一下外部数组缓冲区是否真的需要,对于您的场景..如果是的话,如何以与可读不同的方式命名它内部数组缓冲区。

【讨论】:

c++和c#之间的共享内存同步

】c++和c#之间的共享内存同步【英文标题】:Sharedmemorysynchronizationbetweenc++andc#【发布时间】:2016-10-2510:44:13【问题描述】:我写了两个小程序。将字符串写入共享内存的C++程序,以及从共享内存读取字符串并将其写入控制台的C#... 查看详情

如何从 C# 数组中返回唯一元素

】如何从C#数组中返回唯一元素【英文标题】:HowtoreturnauniqueelementfromaC#array【发布时间】:2021-09-2110:04:53【问题描述】:问题我正在尝试使用内置方法array.Distinct.First()从C#数组中返回唯一元素。该方法适用于某些数组,但返回此... 查看详情

C# 从 Google 共享驱动器 API v.3 中删除文件

】C#从Google共享驱动器APIv.3中删除文件【英文标题】:C#DeleteFilefromGoogleSharedDriveAPIv.3【发布时间】:2021-08-0421:40:52【问题描述】:我能够使用服务帐户成功地将文件上传到Google云端硬盘共享云端硬盘(不是“我的云端硬盘”文件... 查看详情

c#从oracle函数中返回参数

】c#从oracle函数中返回参数【英文标题】:c#returnoutparametersfromoraclefunction【发布时间】:2016-04-2900:42:11【问题描述】:我有textbox,在休假事件中,我正在使用oracle函数检索其他textboxs的数据,所以我编写了以下代码,但没有找到... 查看详情

如何使用 c# 从 azure blob 存储中检索 xml 文件

...38【问题描述】:我想从Blob存储中检索2个Xml文件并使用c#返回这些文件。不用担心连接、容器名和文件名。我尝试使用下面的代码从blob中获取xml作为字符串并作为列表返回,但我需要一个作为Xmlfile的返回。public 查看详情

C#:从后面的代码中拖动任何窗口(以编程方式)

...述】:请让我详细说明我在做什么。我正在创建一个屏幕共享应用程序。其中有2个应用程序首先是一个Windows应用程序(其屏幕正在共享),另一个是浏览器Web应用程序(用户正在其上观看屏幕)。浏览器Web应用程序正在将客户... 查看详情

从 C# 中的存储过程中获取返回值

】从C#中的存储过程中获取返回值【英文标题】:GettingreturnvaluefromstoredprocedureinC#【发布时间】:2010-10-1622:07:29【问题描述】:我有以下疑问:setANSI_NULLSONsetQUOTED_IDENTIFIERONgoALTERPROCEDURE[dbo].[Validate]@avarchar(50),@bvarchar(50)outputASSET@Passw... 查看详情

C# 如何从 Outlook 的共享邮箱发送邮件并将其保存在已发送文件夹中

】C#如何从Outlook的共享邮箱发送邮件并将其保存在已发送文件夹中【英文标题】:C#HowtosendmailfromOutlook\'sSharedMailboxandkeepitinSentfolderthere【发布时间】:2019-11-2516:02:24【问题描述】:我知道如何通过Office.Interop通过Outlook中的共享邮... 查看详情

GetSubKeyNames 函数在 C# 和 Visual Basic 中返回不同的子键

】GetSubKeyNames函数在C#和VisualBasic中返回不同的子键【英文标题】:GetSubKeyNamesfunctionreturndiffrentsubkeysinC#andVisualBasic【发布时间】:2012-11-1407:46:09【问题描述】:我正在使用GetSubKeysNames函数从HKEY_LOCAL_MACHINE\\Software\\Microsoft\\Windows\\Cur... 查看详情

我无法在 C# 中使用 Jquery 和 Ajax 从控制器向 Razor 视图发送值

...间】:2019-12-0102:39:44【问题描述】:我要做的是从控制器返回一个对象,并在剃刀视图中一一读取其所有值。该值从视图到控制器进展顺利;问题是当我尝试从控制器返回它以查看时。我正在使用ASP.NET、Ra 查看详情

C# 从 get 中返回一个只读变量;放;

】C#从get中返回一个只读变量;放;【英文标题】:C#returnavariableasreadonlyfromget;set;【发布时间】:2009-06-0213:33:38【问题描述】:我发誓我见过这样的一个例子,但已经用谷歌搜索了一段时间,找不到它。我有一个类引用了一个对象... 查看详情

从 iis (C# API) 访问 azure 文件共享

】从iis(C#API)访问azure文件共享【英文标题】:Accessazurefilesharefromiis(C#API)【发布时间】:2022-01-1117:48:32【问题描述】:我似乎无法通过在IIS中运行的API访问我挂载的azure文件共享。我的API启动另一个C#控制台应用程序,但由于它是... 查看详情

如何从 C# 中的 C++ dll 中的全局变量从函数中获取返回数组?

】如何从C#中的C++dll中的全局变量从函数中获取返回数组?【英文标题】:HowtogetreturnarrayfromfunctionwithglobalvariablefromC++dllinC#?【发布时间】:2014-08-1507:43:42【问题描述】:我有一个由C++编写的dll文件(文件名是“DllForTest.dll”),... 查看详情

C#:从 Web 服务返回的字节 [] 在新选项卡中显示 PDF

】C#:从Web服务返回的字节[]在新选项卡中显示PDF【英文标题】:C#:DisplayPDFinanewtabfrombyte[]returnedbyWebService【发布时间】:2021-10-2110:28:57【问题描述】:当用户单击图标链接时,我的应用程序正在尝试显示存储在数据库中的PDF。当... 查看详情

使用 SWIG 从 C++ 初始化对 C# 共享指针的引用

】使用SWIG从C++初始化对C#共享指针的引用【英文标题】:InitializeareferencetoaC#sharedpointerfromC++usingSWIG【发布时间】:2017-07-2608:07:06【问题描述】:我正在尝试在C++中初始化对从C#传递的boost共享指针的引用,同时尝试维护继承树。... 查看详情

使用linq c#从数据表中选择整个重复行

...【发布时间】:2012-12-2019:17:27【问题描述】:我可以让它返回单列,但我似乎不知道如何让它给我整行而不是列值。救命!!它应该返回的字段是VDMList和Table。varduplicates=dt.AsEnumerable().Select(dr=>dr.Field& 查看详情

使用 pnp.core 和 pnp.framework 在 C# 中访问共享点文件夹和文件的正确方法是啥?

】使用pnp.core和pnp.framework在C#中访问共享点文件夹和文件的正确方法是啥?【英文标题】:What\'stherightwaytoaccesssharepointfoldersandfilesinC#usingpnp.coreandpnp.framework?使用pnp.core和pnp.framework在C#中访问共享点文件夹和文件的正确方法是什么... 查看详情

如何在C#中解析/反序列化从rest服务返回的JSON

】如何在C#中解析/反序列化从rest服务返回的JSON【英文标题】:Howtoparse/deserializeJSONreturnedfromrestserviceinC#【发布时间】:2014-03-2305:35:00【问题描述】:我从一个结构类似这样的URL获取字符串格式的JSON,但我无法解析它。它抛出了... 查看详情