区块链技术博客
www.b2bchain.cn

您可以使用数组访问C#多维数组索引器吗? – c#程序员分享

本文介绍了您可以使用数组访问C#多维数组索引器吗? – c#程序员分享,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

我试图找出是否有可能将一个对象作为多维数组的索引值传递。

var nums = new int[3,3]; // of course you can index by literal integers nums[0, 2] = 99; // but can you index by an array?  This does not work var index = new [] {0, 2}; nums[index] = 100;  // I can use GetValue with the int array, but this returns an object not an int nums.GetValue(new [] {0, 2}); 

那么,有谁知道我应该将哪种类型传递给多维数组索引器以满足编译器的需求?

参考方案

简短的答案是“不”,您不能本机执行此操作。

稍长一点的答案是肯定的,您可以使用扩展方法来实现这种行为。您可以添加适用于所有数组的扩展方法,如下所示:

public static class ArrayExtender {     public static T GetValue<T>(this T[,] array, params int[] indices)     {         return (T)array.GetValue(indices);     }      public static void SetValue<T>(this T[,] array, T value, params int[] indices)     {         array.SetValue(value, indices);     }      public static T ExchangeValue<T>(this T[,] array, T value, params int[] indices)     {         var previousValue = GetValue(array, indices);         array.SetValue(value, indices);          return previousValue;     } } 

这样,您可以使用:

        var matrix = new int[3, 3];         matrix[0, 2] = 99;          var oldValue = matrix.GetValue(0, 2);         matrix.SetValue(100, 0, 2);         var newValue = matrix.GetValue(0, 2);          Console.WriteLine("Old Value = {0}", oldValue);         Console.WriteLine("New Value = {0}", newValue); 

输出:

Old Value = 99 New Value = 100 

在大多数情况下,对于为什么需要此功能有一个面向对象的答案,可以创建适当的自定义类来简化此操作。例如,我可能有一个棋盘,可以使用辅助方法创建几个类:

class GameBoard {   public GamePiece GetPieceAtLocation(Point location) { ... } } 

我有这段代码来获取两个对象数组之间的区别:$diff = array_udiff($a, $b, function($obj_a, $obj_b) { return $obj_a->id – $obj_b->id; } ); $ a是[ { "id": "7", "attribute":…

如果没有这样的键,如何获取数组内容$products[0] 这将使我部分到达那里,但我该如何过去[]( [0] => Array ( [] => Array ( [0] => Array ( [product_name] => stuff i need to get to ) 参考方案 真奇怪你可以试试$products[0][&#0…

题目地址 https://leetcode.com/problems/sort-an-array/ 题目描述 Given an array of integers nums, sort the array in ascending order. Example 1: Input: [5,2,3,1] Output: [1,2,3,5] Example 2: …

我们经常碰到一个问题,就是需要在一个数组中求最大值或者最小值。如果我们要同时取出最大最小值呢?常见的做法是扫描一次数字,然后分别和当然最大值和当前最小值进行比对,因此总的比较次数是2N,其中N为数组的长度。那么有没有办法减少比较次数呢?题解:“`jsfunction quickSort(array, lowIndex, highIndex) { if (l…

我有:public static BlockQuadrant[] EditModeBlocks = new BlockQuadrant[9];但是当我尝试使用它们时,我得到了一个空值异常,而且显然所有的值都等于空值。我以为这是我的BlockQuadrant类中的一个值,但是我在构造函数中定义了所有内容。如果是这种情况,是否有办法让它用BlockQuadran…

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 您可以使用数组访问C#多维数组索引器吗? – c#程序员分享
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们