记录:C#把二维数组中其中的一维数组复制到另一个单独的一维数组中

int[,] s = new int[2, 10];//等长的二维数组,即{ {1, 2, 3}, {4, 5, 6} }元素个数必须一样

int[][] t = new int[2][];//可变的二维数组(也叫交叉数组),即{ new int[] { 1, 2, 3 }, new int[] { 4, 5, 6, 7 } }元素个数可以不一样

//int[][] t = new int[2][3];//这不可以哟,会报红的

//所以s not t

这两货竟然不是一个意思吗,我白学了!

//正确的
string[][] t = new string[2][];
string[] m = new string[10];
int oi = 0;//瞎搞
if (oi == 0)//就是玩
{
    //一个二维数组
    string[][] s = new string[][] {
       new string [] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" },
       new string [] { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" }, 
    };
    //其中t[0] 即 = { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" }
    //其中t[1] 即 = { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" }
    t[0] = s[0].Select(x => x).ToArray();//or t[0] = s[0].ToArray();
    t[1] = s[1].Select(x => x).ToArray();//把二维数组中的第2数组取出放到新数组
    m = t[0];         //m实际上就是{ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" }
    string[] n = t[1];//n实际上就是{ "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" }
    //用foreach单独取出
    foreach (string value in t[0]) 
    {
        Console.WriteLine(value);//A,B,C,D,...J
    }
    foreach (string value in t[1])
    {
        Console.WriteLine(value);//a,b,c,d,...j
    }

    //用for单独取出
    for (int i = 0; i < 10; i++)
    {
        Console.WriteLine("-----------------------");
        Console.WriteLine("t[0][{0}] = {1}", i, t[0][i]);//A,B,C,D,...J
        Console.WriteLine("t[1][{0}] = {1}", i, t[1][i]);//a,b,c,d,...j
    }
}

//错误的
//一般用法不都是这样吗?
int[,] s = new int[2, 10] {
    {"A","B","C","D","E","F","G","H","I","J"},
    {"a","b","c","d","e","f","g","h","i","j"},
};
int[] t = s[0];//这样拿出A,B,C,D,...J是不对的!这不是lua语言!

上面的是把可变的数组中把某一维的数组复制到另一个单独的一维数组的示例,接下来是把一个等长数组的某一维数组复制到另一个单独的一维数组的示例:

string[,] s = new string[2, 10] {
    { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J" },
    { "a", "b", "c", "d", "e", "f", "g", "h", "i", "j" },
};

int arrayLen = s.GetLength(0);//获取数组的维数->2
int sLen = s.GetLength(1);//获取数组的元素个数->10
Console.WriteLine("arrayLen={0}, sLen={1}", arrayLen, sLen);

string[] t1 = new string[sLen];
string[] t2 = new string[sLen];

//用循环好像有点代码多啊
for (int i = 0; i < sLen; i++)
{
    t1[i] = s[0, i];
    t2[i] = s[1, i];
    Console.WriteLine("t1[{0}]={1}", i, t1[i]);//"A", "B", "C", "D", "E", "F", "G", "H", "I", "J"
    Console.WriteLine("t2[{0}]={1}", i, t2[i]);//"a", "b", "c", "d", "e", "f", "g", "h", "i", "j"
}

//那是不是可以这样呢
string[] t3 = new string[sLen];
string[] t4 = new string[sLen];

//你要是这样想绝对给你不好看,...天真!:)
t3 = s[0];
t4 = s[1];
//所以以我目前的水平也就只能用for或forech了是吧

//lua就阔以呢,很先进是吗?
local a = {{1, 2, 3}, {4, 5, 6, 7}}

local b = a[1] --即:b = {1, 2, 3}
local c = a[2] --即:c = {4, 5, 6, 7}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值