当前位置: 首页 > 编程语言 > C#

将多维数组元素转换为不同类型分享

时间:2023-04-11 03:20:14 C#

将多维数组元素转换为不同类型假设我有这个多维数组:float[][,]vertices={newfloat[,]{{0f,1.28f},{1.28f,2.56f},{3.84f,2.56f},{5.12f,1.28f},{3.84f,0f},{1.28f,0f},{0f,1.28f}},newfloat[,]{{0f,3.83f},{1.27f,5.12f},{3.87f,5.12f},{5.12f,3.83f},{5.12f,1.26f},{3.87f,0f},{1.27f,0f},{0f,1.26f},{0f,3.83f}}};现在,我想将每个子数组转换为Vector2[]类型的数组,其中Vector2是一个公共类,Vector2包含x和y属性:publicclassVector2{publicfloatx;公共浮动y;publicVector2(floatx,floaty){this.x=x;this.y=y}}所以我想从Array[2]元素构造Vector2元素,这些元素是上面顶点数组变量中的子数组。我这样做了:Array.ConvertAll(vertices[0],newConverter(verticesSequence=>{returnnewVector2(verticesSequence[0],verticesSequence[1]);}));但是,作为回报,我收到此错误消息:错误15'System.Array.ConvertAll(float[][],System.Converter)'的最佳重载方法匹配有一些无效参数您有一个数组,每个数组包含两个数组包含可变数量的浮点数组。Array.ConvertAll适用于通过指定映射委托(一对一)将一个数组转换为另一个数组。在这种情况下,您不仅需要将单个float[,]转换为Vector2。请注意,您还使用了float[]到Vector2转换器而不是float[,]到Vector2。像float[,]这样的多维数组也有点棘手,因为它们不支持开箱即用的LINQ,而且更难创建一个完成所有映射的单行代码。换句话说,您至少需要一个辅助方法来映射多维数组的项目:publicstaticIEnumerableConvertVectors(float[,]list){for(introw=0;row然后您可以在Array.ConvertAll中使用它方法:varconverted=Array.ConvertAll(vertices,ff=>ConvertVectors(ff).ToArray());老实说,我更喜欢LINQ解决方案,因为它会自动推断出所有常用参数:varr=vertices.Select(v=>ConvertVectors(v).ToArray()).ToArray();如评论中所述,您收到的错误是因为您试图传入多维数组而不是锯齿状数组。根据您的需要,使用一个简单的循环ListnewList=newList();foreach(float[,]arrayinvertices)for(inti=0;i注意:这会遍历所有顶点,因此可能不需要外部循环。以上就是C#学习教程:将多维数组元素转换为不同类型的所有分享内容,如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: