| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1148 人关注过本帖
标题:[经验]多维数组的神奇用法
只看楼主 加入收藏
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
结帖率:100%
收藏
 问题点数:0 回复次数:5 
[经验]多维数组的神奇用法

今天在QQ群里朋友问了一个多维数组的问题,一直没搞明白,后来查阅MSDN,终于找到了这个例子[CODE]
using System;
public class SamplesArray {

public static void Main() {

// Creates and initializes a multidimensional Array of type String.
int[] myLengthsArray = new int[2] { 3, 5 };
int[] myBoundsArray = new int[2] { 2, 3 };
Array myArray=Array.CreateInstance( typeof(String), myLengthsArray, myBoundsArray );
for ( int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++ )
for ( int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++ ) {
int[] myIndicesArray = new int[2] { i, j };
myArray.SetValue( Convert.ToString(i) + j, myIndicesArray );
}

// Displays the lower bounds and the upper bounds of each dimension.
Console.WriteLine( "Bounds:\tLower\tUpper" );
for ( int i = 0; i < myArray.Rank; i++ )
Console.WriteLine( "{0}:\t{1}\t{2}", i, myArray.GetLowerBound(i), myArray.GetUpperBound(i) );

// Displays the values of the Array.
Console.WriteLine( "The Array contains the following values:" );
PrintValues( myArray );
}


public static void PrintValues( Array myArr ) {
System.Collections.IEnumerator myEnumerator = myArr.GetEnumerator();
int i = 0;
int cols = myArr.GetLength( myArr.Rank - 1 );
while ( myEnumerator.MoveNext() ) {
if ( i < cols ) {
i++;
} else {
Console.WriteLine();
i = 1;
}
Console.Write( "\t{0}", myEnumerator.Current );
}
Console.WriteLine();
}
}

[/CODE]

[此贴子已经被作者于2007-10-18 16:12:23编辑过]

搜索更多相关主题的帖子: 多维 用法 神奇 经验 
2007-10-18 15:00
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
收藏
得分:0 

注意看红色的那部分代码,重点所在!

[此贴子已经被作者于2007-10-18 16:13:29编辑过]


2007-10-18 15:01
天堂落日
Rank: 2
等 级:论坛游民
威 望:2
帖 子:182
专家分:10
注 册:2007-6-17
收藏
得分:0 
呵呵,终于想明白了
Array myArray=Array.CreateInstance( typeof(String), myLengthsArray, myBoundsArray );
这句就是定义了myArray数组的格式
二维数组,第一维的长度是3,第二维的长度是5,也就是说定义了一个三行五列的数组,并且设置了每一维的下标起始点:第一维元素索引从2开始计数,第二维元素索引从3开始计数


int[] myIndicesArray = new int[2] { i, j };
myArray.SetValue( Convert.ToString(i) + j, myIndicesArray );

这里是对数组进行赋值操作……
两句可能是微软为了演示SetValue函数的特殊功能而故意炫耀的吧,反正我是被这个函数弄晕乎了半天,索性自己重新写一句来替代,让大家更容易理解一点:
myArray.SetValue( Convert.ToString(i) + j,i,j);
呵呵,好啦

[此贴子已经被作者于2007-10-18 16:17:01编辑过]


2007-10-18 16:10
crazymk
Rank: 1
等 级:新手上路
威 望:1
帖 子:343
专家分:0
注 册:2007-8-30
收藏
得分:0 

學習


すばらしいコードを書き出すのは楽しい事です
2007-10-18 17:26
swc
Rank: 3Rank: 3
等 级:论坛游民
威 望:6
帖 子:394
专家分:83
注 册:2006-4-7
收藏
得分:0 
学习!

实践、学习、再实践、再学习......
2007-10-18 21:53
Andylauzxb
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2007-10-15
收藏
得分:0 

学习

2007-10-19 12:51
快速回复:[经验]多维数组的神奇用法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014203 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved