C#方法Array.Reverse、CreateInstance、SetValue、GetValue、GetLowerBound(Int32) 、GetUpperBound(Int32)
目录
二、Reverse(Array, Int32, Int32)
(2)CreateInstance(Type, Int32)
(3)CreateInstance(Type, Int32[])
(4)CreateInstance(Type, Int64[])
(5)CreateInstance(Type, Int32, Int32)
(6)CreateInstance(Type, Int32[], Int32[])
(7)CreateInstance(Type, Int32, Int32, Int32)
(6)SetValue(Object, Int32, Int32)
(7)SetValue(Object, Int64, Int64)
(8)SetValue(Object, Int32, Int32, Int32)
(9)SetValue(Object, Int64, Int64, Int64)
(8)GetValue(Int32, Int32, Int32)
(9)GetValue(Int64, Int64, Int64)
4.Array.GetLowerBound(Int32) 方法
5.Array.GetUpperBound(Int32) 方法
????????命名空间:
????????System
????????程序集:
????????System.Runtime.dll
????????反转一维 Array 或部分 Array 中元素的顺序。
一、重载
Reverse(Array, Int32, Int32) | 反转一维?Array?中元素子集的顺序。 |
Reverse(Array) | 反转整个一维?Array?中元素的顺序。 |
Reverse<T>(T[]) | 反转一维泛型数组中元素的顺序。 |
Reverse<T>(T[], Int32, Int32) | 反转一维泛型数组中元素子集的顺序。 |
二、Reverse(Array, Int32, Int32)
????????反转一维 Array 中元素子集的顺序。
1.定义
public static void Reverse (Array array, int index, int length);
参数
array
Array
要反转的一维 Array。
index
Int32
要反转的部分的起始索引。
length
Int32
要反转的部分中的元素数。
例外
ArgumentNullException
array 为 null。
RankException
array 是多维的。
ArgumentOutOfRangeException
index 小于 array 的下限。
或 -
length 小于零。
ArgumentException
index 和 length 未在 array 中指定有效范围。
2.实例
????????如何在一 Array系列元素中反转值的排序。
// Array.Reverse 方法
namespace Reverse
{
public class SamplesArray1
{
public static void Main()
{
// Creates and initializes a new Array.
Array myArray = Array.CreateInstance(typeof(string), 9);
myArray.SetValue("The", 0);
myArray.SetValue("QUICK", 1);
myArray.SetValue("BROWN", 2);
myArray.SetValue("FOX", 3);
myArray.SetValue("jumps", 4);
myArray.SetValue("over", 5);
myArray.SetValue("the", 6);
myArray.SetValue("lazy", 7);
myArray.SetValue("dog", 8);
Console.WriteLine("The Array initially contains the following values:");
PrintIndexAndValues(myArray);
Array.Reverse(myArray, 1, 3); //索引1开始的3个数组元素颠倒顺序
Console.WriteLine("After reversing:");
PrintIndexAndValues(myArray);
}
public static void PrintIndexAndValues(Array myArray)
{
for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
Console.WriteLine("\t[{0}]:\t{1}", i, myArray.GetValue(i));
}
}
}
/*
运行结果:
The Array initially contains the following values:
[0]: The
[1]: QUICK
[2]: BROWN
[3]: FOX
[4]: jumps
[5]: over
[6]: the
[7]: lazy
[8]: dog
After reversing:
[0]: The
[1]: FOX
[2]: BROWN
[3]: QUICK
[4]: jumps
[5]: over
[6]: the
[7]: lazy
[8]: dog
*/
三、?Reverse(Array)
????????反转整个一维 Array 中元素的顺序。
1.定义
public static void Reverse (Array array);
参数
array
Array
要反转的一维 Array。
例外
ArgumentNullException
array 为 null。
RankException
array 是多维的。
2.实例
?????????反转一个 Array值中的值排序。
// Reverse(Array)
namespace Reverse1
{
public class SamplesArray
{
public static void Main()
{
// Creates and initializes a new Array.
Array myArray = Array.CreateInstance(typeof(string), 9);
myArray.SetValue("The", 0);
myArray.SetValue("quick", 1);
myArray.SetValue("brown", 2);
myArray.SetValue("fox", 3);
myArray.SetValue("jumps", 4);
myArray.SetValue("over", 5);
myArray.SetValue("the", 6);
myArray.SetValue("lazy", 7);
myArray.SetValue("dog", 8);
Console.WriteLine("The Array initially contains the following values:");
PrintIndexAndValues(myArray);
Array.Reverse(myArray); //颠倒数组中所有元素的顺序
Console.WriteLine("After reversing:");
PrintIndexAndValues(myArray);
}
public static void PrintIndexAndValues(Array myArray)
{
for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
Console.WriteLine("\t[{0}]:\t{1}", i, myArray.GetValue(i));
}
}
}
/*
运行结果:
The Array initially contains the following values:
[0]: The
[1]: quick
[2]: brown
[3]: fox
[4]: jumps
[5]: over
[6]: the
[7]: lazy
[8]: dog
After reversing:
[0]: dog
[1]: lazy
[2]: the
[3]: over
[4]: jumps
[5]: fox
[6]: brown
[7]: quick
[8]: The
*/
四、Reverse<T>(T[])
????????反转一维泛型数组中元素的顺序。
public static void Reverse<T> (T[] array);
类型参数
T
array 中的元素的类型。
参数
array
T[]
要反转的元素的一维数组。
例外
ArgumentNullException
array 为 null。
RankException
array 是多维的。
五、Reverse<T>(T[], Int32, Int32)
????????反转一维泛型数组中元素子集的顺序
public static void Reverse<T> (T[] array, int index, int length);
类型参数
T
array 中的元素的类型。
参数
array
T[]
要反转的元素的一维数组。
index
Int32
要反转的部分的起始索引。
length
Int32
要反转的部分中的元素数。
例外
ArgumentNullException
array 为 null。
RankException
array 是多维的。
ArgumentOutOfRangeException
index 小于 array 的下限。
或 -
length 小于零。
ArgumentException
index 和 length 未在 array 中指定有效范围。
六、实例中的知识点
1.Array.CreateInstance 方法
????????初始化 Array 类的新实例。
(1)重载
CreateInstance(Type, Int32) | 创建使用从零开始的索引、具有指定?Type?和长度的一维?Array。 |
CreateInstance(Type, Int32[]) | 创建索引从零开始、具有指定?Type?和维长的多维?Array。?维的长度在一个?32?位整数数组中指定。 |
CreateInstance(Type, Int64[]) | 创建索引从零开始、具有指定?Type?和维长的多维?Array。?维度的长度在一个?64?位整数数组中指定。 |
CreateInstance(Type, Int32, Int32) | 创建使用从零开始的索引、具有指定?Type?和维长的二维?Array。 |
CreateInstance(Type, Int32[], Int32[]) | 创建具有指定下限、指定?Type?和维长的多维?Array。 |
CreateInstance(Type, Int32, Int32, Int32) | 创建使用从零开始的索引、具有指定?Type?和维长的三维?Array。 |
(2)CreateInstance(Type, Int32)
?????????创建使用从零开始的索引、具有指定 Type 和长度的一维 Array。
public static Array CreateInstance (Type elementType, int length);
参数
elementType
Type
要创建的 Array 的 Type。
length
Int32
要创建的 Array 的大小。
返回
Array
使用从零开始的索引、具有指定 Type 和长度的新的一维 Array。
例外
ArgumentNullException
elementType 为 null。
ArgumentException
elementType 不是有效的 Type。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
length 小于零。
????????示例
// CreateInstance(Type, Int32)
// 创建和初始化一维 Array。
using System.Collections;
namespace ConsoleApp3
{
public class SamplesArray
{
public static void Main()
{
// 创建和初始化数组,数组type int.
Array my1DArray = Array.CreateInstance(typeof(int), 5);
for (int i = my1DArray.GetLowerBound(0); i <= my1DArray.GetUpperBound(0); i++)
my1DArray.SetValue(i + 10, i);
// 输出数组各元素
Console.WriteLine("The one-dimensional Array contains the following values:");
for (int i = my1DArray.GetLowerBound(0); i <= my1DArray.GetUpperBound(0); i++)
Console.Write("\t{0}", my1DArray.GetValue(i));
Console.WriteLine();
}
}
}
/*
运行结果:
The one-dimensional Array contains the following values:
10 11 12 13 14
*/
(3)CreateInstance(Type, Int32[])
????????创建索引从零开始、具有指定 Type 和维度的多维 Array。 数组维度在一个 32 位整数数组中指定。
public static Array CreateInstance (Type elementType, params int[] lengths);
参数
elementType
Type
要创建的 Array 的 Type。
lengths
Int32[]
一个 32 位整数数组,它表示要创建的 Array 中每个维度的大小。
返回
Array
指定 Type 的新多维 Array,该数组每个维具有指定长度,且使用从零开始的索引。
例外
ArgumentNullException
elementType 为 null。
或
lengths 为 null。
ArgumentException
elementType 不是有效的 Type。
- 或 -
lengths 数组包含的元素少于一个。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
lengths 中的任何值都小于零。
????????示例
// CreateInstance(Type, Int32[])
// 创建和初始化多维 Array
namespace ConsoleApp4
{
public class SamplesArray3
{
public static void Main()
{
// 创建和初始化一个多维数组,数组type string.
int[] myLengthsArray = [2, 3, 4, 5];
Array my4DArray = Array.CreateInstance(typeof(string), myLengthsArray);
for (int i = my4DArray.GetLowerBound(0); i <= my4DArray.GetUpperBound(0); i++)
for (int j = my4DArray.GetLowerBound(1); j <= my4DArray.GetUpperBound(1); j++)
for (int k = my4DArray.GetLowerBound(2); k <= my4DArray.GetUpperBound(2); k++)
for (int l = my4DArray.GetLowerBound(3); l <= my4DArray.GetUpperBound(3); l++)
{
int[] myIndicesArray = [i, j, k, l];
my4DArray.SetValue(Convert.ToString(i)+ j + k + l, myIndicesArray);
}
//输出多维数组各元素
Console.WriteLine("The four-dimensional Array contains the following values:");
for (int i = my4DArray.GetLowerBound(0); i <= my4DArray.GetUpperBound(0); i++)
for (int j = my4DArray.GetLowerBound(1); j <= my4DArray.GetUpperBound(1); j++)
for (int k = my4DArray.GetLowerBound(2); k <= my4DArray.GetUpperBound(2); k++)
{
for (int l = my4DArray.GetLowerBound(3); l <= my4DArray.GetUpperBound(3); l++)
{
int[] myIndicesArray = [i, j, k, l];
Console.Write("{0}\t", my4DArray.GetValue(myIndicesArray));
}
Console.WriteLine();
}
}
}
}
/*
运行结果:
The four-dimensional Array contains the following values:
0000 0001 0002 0003 0004
0010 0011 0012 0013 0014
0020 0021 0022 0023 0024
0030 0031 0032 0033 0034
0100 0101 0102 0103 0104
0110 0111 0112 0113 0114
0120 0121 0122 0123 0124
0130 0131 0132 0133 0134
0200 0201 0202 0203 0204
0210 0211 0212 0213 0214
0220 0221 0222 0223 0224
0230 0231 0232 0233 0234
1000 1001 1002 1003 1004
1010 1011 1012 1013 1014
1020 1021 1022 1023 1024
1030 1031 1032 1033 1034
1100 1101 1102 1103 1104
1110 1111 1112 1113 1114
1120 1121 1122 1123 1124
1130 1131 1132 1133 1134
1200 1201 1202 1203 1204
1210 1211 1212 1213 1214
1220 1221 1222 1223 1224
1230 1231 1232 1233 1234
*/
(4)CreateInstance(Type, Int64[])
????????创建索引从零开始、具有指定 Type 和维长的多维 Array。 维度的长度在一个 64 位整数数组中指定。
public static Array CreateInstance (Type elementType, params long[] lengths);
参数
elementType
Type
要创建的 Array 的 Type。
lengths
Int64[]
一个 64 位整数数组,它表示要创建的 Array 中每个维度的大小。 数组中的每个整数都必须介于零和 Int32.MaxValue 之间(含)。
返回
Array
指定 Type 的新多维 Array,该数组每个维具有指定长度,且使用从零开始的索引。
例外
ArgumentNullException
elementType 为 null。
或
lengths 为 null。
ArgumentException
elementType 不是有效的 Type。
- 或 -
lengths 数组包含的元素少于一个。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
中的任何 lengths 值都小于零或大于 Int32.MaxValue。
(5)CreateInstance(Type, Int32, Int32)
?????????创建使用从零开始的索引、具有指定 Type 和维长的二维 Array。
public static Array CreateInstance (Type elementType, int length1, int length2);
参数
elementType
Type
要创建的 Array 的 Type。
length1
Int32
要创建的 Array 的第一维的大小。
length2
Int32
要创建的 Array 的第二维的大小。
返回
Array
使用从零开始的索引、具有指定 Type 的新的二维 Array,其每个维度都为指定的长度。
例外
ArgumentNullException
elementType 为 null。
ArgumentException
elementType 不是有效的 Type。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
length1 小于零。
或
length2 小于零。
?????????示例
// CreateInstance(Type, Int32, Int32)
// 创建和初始化二维 Array
namespace ConsoleApp5
{
public class SamplesArray1
{
public static void Main()
{
// 创建和初始化一个二维数组,数组type string.
Array my2DArray = Array.CreateInstance(typeof(string), 2, 3);
for (int i = my2DArray.GetLowerBound(0); i <= my2DArray.GetUpperBound(0); i++)
for (int j = my2DArray.GetLowerBound(1); j <= my2DArray.GetUpperBound(1); j++)
my2DArray.SetValue("abc" + i + j, i, j); //字符串连接的方法,隐形转换
// 显示数组各元素
Console.WriteLine("The two-dimensional Array contains the following values:");
//PrintValues(my2DArray);
for (int i = my2DArray.GetLowerBound(0); i <= my2DArray.GetUpperBound(0); i++)
{
for (int j = my2DArray.GetLowerBound(1); j <= my2DArray.GetUpperBound(1); j++)
Console.Write("{0}\t", my2DArray.GetValue(i, j));
Console.WriteLine();
}
}
}
}
/*
运行结果:
The two-dimensional Array contains the following values:
abc00 abc01 abc02
abc10 abc11 abc12
*/
(6)CreateInstance(Type, Int32[], Int32[])
????????创建具有指定下限、指定 Type 和维长的多维 Array。
public static Array CreateInstance (Type elementType, int[] lengths, int[] lowerBounds);
参数
elementType
Type
要创建的 Array 的 Type。
lengths
Int32[]
一维数组,它包含要创建的 Array 的每个维度的大小。
lowerBounds
Int32[]
一维数组,它包含要创建的 Array 的每个维度的下限(起始索引)。
返回
Array
具有指定 Type 的新的多维 Array,其每个维度都具有指定长度和下限。
例外
ArgumentNullException
elementType 为 null。
或
lengths 上声明的默认值为 null。
或
lowerBounds 为 null。
ArgumentException
elementType 不是有效的 Type。
- 或 -
lengths 数组包含的元素少于一个。
- 或 -
lengths 和 lowerBounds 数组包含的元素数不同。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
lengths 中的任何值都小于零。
- 或 -
方法中的任何 lowerBounds 值都非常大,因此维度的下限和长度之和大于 Int32.MaxValue。
?????????示例
// CreateInstance(Type, Int32[], Int32[])
// 创建和初始化具有指定下限的多维 Array
namespace ConsoleApp7
{
public class SamplesArray4
{
public static void Main()
{
// 创建和初始化一个多维数组,数组type string.
int[] myLengthsArray = [3, 5]; //约束新建数组每个维度的长度
int[] myBoundsArray = [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 = [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++) // myArray.Rank数组的维数=2
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:");
for (int i = myArray.GetLowerBound(0); i <= myArray.GetUpperBound(0); i++)
{
for (int j = myArray.GetLowerBound(1); j <= myArray.GetUpperBound(1); j++)
{
int[] myIndicesArray = [i, j];
Console.Write("{0}\t", myArray.GetValue(myIndicesArray));
}
Console.WriteLine();
}
}
}
}
/*
运行结果:
Bounds: Lower Upper
维数0: 下限2 上限4
维数1: 下限3 上限7
The Array contains the following values:
23 24 25 26 27
33 34 35 36 37
43 44 45 46 47
*/
(7)CreateInstance(Type, Int32, Int32, Int32)
????????创建使用从零开始的索引、具有指定 Type 和维长的三维 Array。
public static Array CreateInstance (Type elementType, int length1, int length2, int length3);
参数
elementType
Type
要创建的 Array 的 Type。
length1
Int32
要创建的 Array 的第一维的大小。
length2
Int32
要创建的 Array 的第二维的大小。
length3
Int32
要创建的 Array 的第三维的大小。
返回
Array
每个维具有指定长度、使用从零开始的索引的指定 Type 的新三维 Array。
例外
ArgumentNullException
elementType 为 null。
ArgumentException
elementType 不是有效的 Type。
NotSupportedException
不支持 elementType。 例如,不支持 Void。
- 或 -
elementType 为开放式泛型类型。
ArgumentOutOfRangeException
length1 小于零。
或
length2 小于零。
或
length3 小于零。
?????????示例
// CreateInstance(Type, Int32, Int32, Int32)
// 创建和初始化三维 Array
namespace ConsoleApp6
{
public class SamplesArray2
{
public static void Main()
{
// 创建和初始化一个三维数组,数组type Object.
Array my3DArray = Array.CreateInstance(typeof(object), 2, 3, 4);
for (int i = my3DArray.GetLowerBound(0); i <= my3DArray.GetUpperBound(0); i++)
for (int j = my3DArray.GetLowerBound(1); j <= my3DArray.GetUpperBound(1); j++)
for (int k = my3DArray.GetLowerBound(2); k <= my3DArray.GetUpperBound(2); k++)
my3DArray.SetValue("abc" + i + j + k, i, j, k);
// 输出数组个元素的值
Console.WriteLine("The three-dimensional Array contains the following values:");
for (int i = my3DArray.GetLowerBound(0); i <= my3DArray.GetUpperBound(0); i++)
for (int j = my3DArray.GetLowerBound(1); j <= my3DArray.GetUpperBound(1); j++)
{
for (int k = my3DArray.GetLowerBound(2); k <= my3DArray.GetUpperBound(2); k++)
Console.Write("{0}\t", my3DArray.GetValue(i, j, k));
Console.WriteLine();
}
}
}
}
/*
运行结果:
The three-dimensional Array contains the following values:
abc000 abc001 abc002 abc003
abc010 abc011 abc012 abc013
abc020 abc021 abc022 abc023
abc100 abc101 abc102 abc103
abc110 abc111 abc112 abc113
abc120 abc121 abc122 abc123
*/
2.Array.SetValue 方法
????????将当前 Array 中的指定元素设置为指定值。
(1)重载
SetValue(Object, Int32) | 将值设置为一维?Array?中指定位置的元素。?索引指定为?32?位整数。 |
SetValue(Object, Int32[]) | 将值设置为多维?Array?中指定位置的元素。?索引指定为一个?32?位整数数组。 |
SetValue(Object, Int64) | 将值设置为一维?Array?中指定位置的元素。?索引指定为?64?位整数。 |
SetValue(Object, Int64[]) | 将值设置为多维?Array?中指定位置的元素。?索引指定为一个?64?位整数数组。 |
SetValue(Object, Int32, Int32) | 将某值设置给二维?Array?中指定位置的元素。?索引指定为?32?位整数。 |
SetValue(Object, Int64, Int64) | 将某值设置给二维?Array?中指定位置的元素。?索引指定为?64?位整数。 |
SetValue(Object, Int32, Int32, Int32) | 将值设置为三维?Array?中指定位置的元素。?索引指定为?32?位整数。 |
SetValue(Object, Int64, Int64, Int64) | 将值设置为三维?Array?中指定位置的元素。?索引指定为?64?位整数。 |
(2)SetValue(Object, Int32)
?????????将值设置为一维 Array 中指定位置的元素。 索引指定为 32 位整数。
public void SetValue (object value, int index);
参数
value
Object
指定元素的新值。
index
Int32
一个 32 位整数,它表示要设置的 Array 元素的位置。
例外
ArgumentException
当前 Array 不是正好具有一个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
IndexOutOfRangeException
index 超出了当前 Array 的有效索引的范围。
注解
和GetLowerBoundGetUpperBound方法可以确定值index是否超出边界。
(3)SetValue(Object, Int32[])
?????????将值设置为多维 Array 中指定位置的元素。 索引指定为一个 32 位整数数组。
public void SetValue (object value, params int[] indices);
参数
value
Object
指定元素的新值。
indices
Int32[]
32 位整数的一维数组,它表示用于指定要设置的元素的位置的索引。
例外
ArgumentNullException
indices 为 null。
ArgumentException
当前 Array 中的维数不等于 indices 中的元素数。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
IndexOutOfRangeException
indices 中的任何元素都超出了当前 Array 的相应维度的有效索引范围。
注解
方法中的indices元素数必须等于.Array中的维度数。 数组中的所有indices元素必须统一指定多维Array元素中所需元素的位置。
和GetLowerBoundGetUpperBound方法可以确定数组中的任何indices值是否超出边界。
(4)SetValue(Object, Int64)
?????????将值设置为一维 Array 中指定位置的元素。 索引指定为 64 位整数。
public void SetValue (object value, long index);
参数
value
Object
指定元素的新值。
index
Int64
一个 64 位整数,它表示要设置的 Array 元素的位置。
例外
ArgumentException
当前 Array 不是正好具有一个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
ArgumentOutOfRangeException
index 超出了当前 Array 的有效索引的范围。
注解
和GetLowerBoundGetUpperBound方法可以确定值index是否超出边界。
(5)?SetValue(Object, Int64[])
????????将值设置为多维 Array 中指定位置的元素。 索引指定为一个 64 位整数数组。
public void SetValue (object value, params long[] indices);
参数
value
Object
指定元素的新值。
indices
Int64[]
64位整数的一维数组,它表示用于指定要设置元素的位置索引。
例外
ArgumentNullException
indices 为 null。
ArgumentException
当前Array中的维数不等于indices中的元素数。
InvalidCastException
value不能转换为当前Array的元素类型。
ArgumentOutOfRangeException
indices中的任何元素都超出了当前Array的相应维度的有效索引范围。
注解
方法中的indices元素数必须等于.Array中的维度数。 数组中的所有indices元素必须统一指定多维Array元素中所需元素的位置。
和GetLowerBoundGetUpperBound方法可以确定数组中的任何indices值是否超出边界。
(6)SetValue(Object, Int32, Int32)
????????将某值设置给二维 Array 中指定位置的元素。 索引指定为 32 位整数。
public void SetValue (object value, int index1, int index2);
参数
value
Object
指定元素的新值。
index1
Int32
一个 32 位整数,它表示要设置的 Array 元素的第一维索引。
index2
Int32
一个 32 位整数,它表示要设置的 Array 元素的第二维索引。
例外
ArgumentException
当前 Array 不是正好具有两个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
IndexOutOfRangeException
index1 或 index2 超出了当前 Array 的相应维度的有效索引范围。
注解
这些 GetLowerBound 索引和 GetUpperBound 方法可以确定任何索引是否超出边界。
(7)SetValue(Object, Int64, Int64)
?????????将某值设置给二维 Array 中指定位置的元素。 索引指定为 64 位整数。
public void SetValue (object value, long index1, long index2);
参数
value
Object
指定元素的新值。
index1
Int64
一个 64 位整数,它表示要设置的 Array 元素的第一维索引。
index2
Int64
一个 64 位整数,它表示要设置的 Array 元素的第二维索引。
例外
ArgumentException
当前 Array 不是正好具有两个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
ArgumentOutOfRangeException
index1 或 index2 超出了当前 Array 的相应维度的有效索引范围。
注解
这些 GetLowerBound 索引和 GetUpperBound 方法可以确定任何索引是否超出边界。
(8)SetValue(Object, Int32, Int32, Int32)
?????????将值设置为三维 Array 中指定位置的元素。 索引指定为 32 位整数。
public void SetValue (object value, int index1, int index2, int index3);
参数
value
Object
指定元素的新值。
index1
Int32
一个 32 位整数,它表示要设置的 Array 元素的第一维索引。
index2
Int32
一个 32 位整数,它表示要设置的 Array 元素的第二维索引。
index3
Int32
一个 32 位整数,它表示要设置的 Array 元素的第三维索引。
例外
ArgumentException
当前 Array 不是正好具有三个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
IndexOutOfRangeException
index1 或 index2 或 index3 超出了当前 Array 的相应维度的有效索引范围。
注解
这些 GetLowerBound 索引和 GetUpperBound 方法可以确定任何索引是否超出边界。
(9)SetValue(Object, Int64, Int64, Int64)
?????????将值设置为三维 Array 中指定位置的元素。 索引指定为 64 位整数。
public void SetValue (object value, long index1, long index2, long index3);
参数
value
Object
指定元素的新值。
index1
Int64
一个 64 位整数,它表示要设置的 Array 元素的第一维索引。
index2
Int64
一个 64 位整数,它表示要设置的 Array 元素的第二维索引。
index3
Int64
一个 64 位整数,它表示要设置的 Array 元素的第三维索引。
例外
ArgumentException
当前 Array 不是正好具有三个维度。
InvalidCastException
value 不能转换为当前 Array 的元素类型。
ArgumentOutOfRangeException
index1 或 index2 或 index3 超出了当前 Array 的相应维度的有效索引范围。
注解
这些 GetLowerBound 索引和 GetUpperBound 方法可以确定任何索引是否超出边界。
(10)示例
// Array.SetValue 方法
// Array.GetValue 方法
namespace setValue
{
public class SamplesArray
{
public static void Main()
{
string[] myArr1 = new string[5]; // 创建并初始化一维数组
myArr1.SetValue("three", 3); // 设置索引值=3处设置数组元素值
Console.WriteLine("[3]: {0}", myArr1.GetValue(3)); // 输出索引值=3的数组元素
string[,] myArr2 = new string[5, 5]; // 创建并初始化二维数组
myArr2.SetValue("one-three", 1, 3); // 设置索引值 = 1,3处设置数组元素值
Console.WriteLine("[1,3]: {0}", myArr2.GetValue(1, 3));// 输出索引值=1,3的数组元素
string[,,] myArr3 = new string[5, 5, 5]; // 创建并初始化三维数组
myArr3.SetValue("one-two-three", 1, 2, 3); // 设置索引值=1,2,3处设置数组元素值
Console.WriteLine("[1,2,3]: {0}", myArr3.GetValue(1, 2, 3));
string[,,,,,,] myArr7 = new string[5, 5, 5, 5, 5, 5, 5]; // 创建并初始化7维数组
int[] myIndices = [1, 2, 3, 0, 1, 2, 3]; // 7维数组的一个索引数组
myArr7.SetValue("one-two-three-zero-one-two-three", myIndices); // 设置索引值=myIndices处设置数组元素值
Console.WriteLine("[1,2,3,0,1,2,3]: {0}", myArr7.GetValue(myIndices));
myArr7.SetValue("one-two-three-zero-one-two-three", 1, 2, 3, 0, 1, 2, 3); // 等效语句
Console.WriteLine("[1,2,3,0,1,2,3]: {0}", myArr7.GetValue(1, 2, 3, 0, 1, 2, 3));
}
}
}
/*
运行结果:
[3]: three
[1,3]: one-three
[1,2,3]: one-two-three
[1,2,3,0,1,2,3]: one-two-three-zero-one-two-three
[1,2,3,0,1,2,3]: one-two-three-zero-one-two-three
*/
3.Array.GetValue 方法
????????获取当前 Array 中指定元素的值。
(1)重载
GetValue(Int32) | 获取一维?Array?中指定位置的值。?索引指定为?32?位整数。 |
GetValue(Int32[]) | 获取多维?Array?中指定位置的值。?索引指定为一个?32?位整数数组。 |
GetValue(Int64) | 获取一维?Array?中指定位置的值。?索引指定为?64?位整数。 |
GetValue(Int64[]) | 获取多维?Array?中指定位置的值。?索引指定为一个?64?位整数数组。 |
GetValue(Int32, Int32) | 获取二维?Array?中指定位置的值。?索引指定为?32?位整数。 |
GetValue(Int64, Int64) | 获取二维?Array?中指定位置的值。?索引指定为?64?位整数。 |
GetValue(Int32, Int32, Int32) | 获取三维?Array?中指定位置的值。?索引指定为?32?位整数。 |
GetValue(Int64, Int64, Int64) | 获取三维?Array?中指定位置的值。?索引指定为?64?位整数。 |
(2)GetValue(Int32)
?????????获取一维 Array 中指定位置的值。 索引指定为 32 位整数。
public object GetValue (int index);
参数
index
Int32
一个 32 位整数,它表示要获取的 Array 元素的位置。
返回
Object
一维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有一个维度。
IndexOutOfRangeException
index 超出了当前 Array 的有效索引的范围。
注解
和GetLowerBoundGetUpperBound方法可以确定值index是否超出边界。
(3)GetValue(Int32[])
?????????获取多维 Array 中指定位置的值。 索引指定为一个 32 位整数数组。
public object GetValue (params int[] indices);
参数
indices
Int32[]
一个 32 位整数的一维数组,它表示指定要获取的 Array 元素的位置的索引。
返回
Object
多维 Array 中指定位置的值。
例外
ArgumentNullException
indices 为 null。
ArgumentException
当前 Array 中的维数不等于 indices 中的元素数。
IndexOutOfRangeException
indices 中的任何元素都超出了当前 Array 的相应维度的有效索引范围。
注解
方法中的 indices 元素数必须与维度 Array数相等。 数组中的所有 indices 元素必须统一指定多维 Array元素中所需元素的位置。和GetLowerBoundGetUpperBound方法可以确定任何索引是否超出边界。
(4)GetValue(Int64)
?????????获取一维 Array 中指定位置的值。 索引指定为 64 位整数。
public object GetValue (long index);
参数
index
Int64
一个 64 位整数,它表示要获取的 Array 元素的位置。
返回
Object
一维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有一个维度。
ArgumentOutOfRangeException
index 超出了当前 Array 的有效索引的范围。
注解
和GetLowerBoundGetUpperBound方法可以确定值index是否超出边界。
(5)GetValue(Int64[])
?????????获取多维 Array 中指定位置的值。 索引指定为一个 64 位整数数组。
public object GetValue (params long[] indices);
参数
indices
Int64[]
一个 64 位整数的一维数组,它表示指定要获取的 Array 元素的位置的索引。
返回
Object
多维 Array 中指定位置的值。
例外
ArgumentNullException
indices 为 null。
ArgumentException
当前 Array 中的维数不等于 indices 中的元素数。
ArgumentOutOfRangeException
indices 中的任何元素都超出了当前 Array 的相应维度的有效索引范围。
注解
方法中的 indices 元素数必须与维度 Array数相等。 数组中的所有 indices 元素必须统一指定多维 Array元素中所需元素的位置。和GetLowerBoundGetUpperBound方法可以确定任何索引是否超出边界。
(6)GetValue(Int32, Int32)
?????????获取二维 Array 中指定位置的值。 索引指定为 32 位整数。
public object GetValue (int index1, int index2);
参数
index1
Int32
一个 32 位整数,它表示要获取的 Array 元素的第一维索引。
index2
Int32
一个 32 位整数,它表示要获取的 Array 元素的第二维索引。
返回
Object
二维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有两个维度。
IndexOutOfRangeException
index1 或 index2 超出了当前 Array 的相应维度的有效索引范围。
注解
和GetLowerBoundGetUpperBound方法可以确定任何索引是否超出边界。
(7)GetValue(Int64, Int64)
?????????获取二维 Array 中指定位置的值。 索引指定为 64 位整数。
public object GetValue (long index1, long index2);
参数
index1
Int64
一个 64 位整数,它表示要获取的 Array 元素的第一维索引。
index2
Int64
一个 64 位整数,它表示要获取的 Array 元素的第二维索引。
返回
Object
二维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有两个维度。
ArgumentOutOfRangeException
index1 或 index2 超出了当前 Array 的相应维度的有效索引范围。
注解
和GetLowerBoundGetUpperBound方法可以确定任何索引是否超出边界。
(8)GetValue(Int32, Int32, Int32)
????????获取三维 Array 中指定位置的值。 索引指定为 32 位整数。
public object GetValue (int index1, int index2, int index3);
参数
index1
Int32
一个 32 位整数,它表示要获取的 Array 元素的第一维索引。
index2
Int32
一个 32 位整数,它表示要获取的 Array 元素的第二维索引。
index3
Int32
一个 32 位整数,它表示要获取的 Array 元素的第三维索引。
返回
Object
三维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有三个维度。
IndexOutOfRangeException
index1 或 index2 或 index3 超出了当前 Array 的相应维度的有效索引范围。
注解
和GetLowerBoundGetUpperBound方法可以确定任何索引是否超出边界。
(9)GetValue(Int64, Int64, Int64)
????????获取三维 Array 中指定位置的值。 索引指定为 64 位整数。
public object GetValue (long index1, long index2, long index3);
参数
index1
Int64
一个 64 位整数,它表示要获取的 Array 元素的第一维索引。
index2
Int64
一个 64 位整数,它表示要获取的 Array 元素的第二维索引。
index3
Int64
一个 64 位整数,它表示要获取的 Array 元素的第三维索引。
返回
Object
三维 Array 中指定位置的值。
例外
ArgumentException
当前 Array 不是正好具有三个维度。
ArgumentOutOfRangeException
index1 或 index2 或 index3 超出了当前 Array 的相应维度的有效索引范围。
注解
这些 GetLowerBound 索引和 GetUpperBound 方法可以确定任何索引是否超出边界。
4.Array.GetLowerBound(Int32) 方法
????????获取数组中指定维度第一个元素的索引。
(1)定义
public int GetLowerBound (int dimension);
参数
dimension
Int32
数组的从零开始的维度,其起始索引需要确定。
返回
Int32
数组中指定维度第一个元素的索引。
例外
IndexOutOfRangeException
dimension 小于零。
或 -
dimension 等于或大于 Rank。
(2)示例
????????使用 GetLowerBound 和 GetUpperBound 方法显示一维数组和二维数组的边界,并显示其数组元素的值
// 使用 GetLowerBound 和 GetUpperBound 方法显示一维数组和二维数组的边界,
// 并显示其数组元素的值。
namespace GetLowerBound
{
public class Example
{
public static void Main()
{
// Create a one-dimensional integer array.
int[] integers = [2, 4, 6, 8, 10, 12, 14, 16, 18, 20];
// Get the upper and lower bound of the array.
int upper = integers.GetUpperBound(0);
int lower = integers.GetLowerBound(0);
Console.WriteLine($"Elements from index {lower} to {upper}:");
// Iterate the array.
for (int i = lower; i <= upper; i++)
Console.Write($"{(i == lower ? " " : "")}{integers[i]}" +
$"{(i < upper ? ", " : Environment.NewLine)}");
Console.WriteLine();
// Create a two-dimensional integer array.
int[,] integers2d = { {2, 4}, {3, 9}, {4, 16}, {5, 25},
{6, 36}, {7, 49}, {8, 64}, {9, 81} };
// Get the number of dimensions.
int rank = integers2d.Rank;
Console.WriteLine($"Number of dimensions: {rank}");
for (int i = 0; i < rank; i++)
Console.WriteLine($" Dimension {i}: " +
$"from {integers2d.GetLowerBound(i)} to {integers2d.GetUpperBound(i)}");
// Iterate the 2-dimensional array and display its values.
Console.WriteLine(" Values of array elements:");
for (int outer = integers2d.GetLowerBound(0); outer <= integers2d.GetUpperBound(0);
outer++)
for (int inner = integers2d.GetLowerBound(1); inner <= integers2d.GetUpperBound(1);
inner++)
Console.WriteLine($" {'\u007b'}{outer}, {inner}{'\u007d'} = " +
$"{integers2d.GetValue(outer, inner)}");
}
}
}
// 运行结果:
/*
Elements from index 0 to 9:
2, 4, 6, 8, 10, 12, 14, 16, 18, 20
Number of dimensions: 2
Dimension 0: from 0 to 7
Dimension 1: from 0 to 1
Values of array elements:
{0, 0} = 2
{0, 1} = 4
{1, 0} = 3
{1, 1} = 9
{2, 0} = 4
{2, 1} = 16
{3, 0} = 5
{3, 1} = 25
{4, 0} = 6
{4, 1} = 36
{5, 0} = 7
{5, 1} = 49
{6, 0} = 8
{6, 1} = 64
{7, 0} = 9
{7, 1} = 81
*/
5.Array.GetUpperBound(Int32) 方法
????????获取数组中指定维度最后一个元素的索引。
public int GetUpperBound (int dimension);
参数
dimension
Int32
数组的从零开始的维度,其上限需要确定。
返回
Int32
数组中指定维度最后一个元素的索引,或 -1(如果指定维度为空)。
例外
IndexOutOfRangeException
dimension 小于零。
或 -
dimension 等于或大于 Rank。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!