1.针对数组元素的查询和转换操作
加入有个int类型的数组,要转换成double,那该怎么做呢?
数组类型基类有一个Array的ConvertAll方法实现。
实现代码如下:
2 public static void Main()
3 {
4 int[] intarr = new int[] { 1, 5, 6, 7, 8, 9, 10 };
5 double[] arrdouble = Array.ConvertAll<int, double>(intarr, intdouble);
6 Array.ForEach<double>(arrdouble, ele => { Console.WriteLine("{0:N}\n", ele); });
7
8 }
不知道还有没有更好的办法?
2.针对数组的每个元素都做相同的改变,那该怎么做呢?
可以用 public static void ForEach<T>(T[] array, Action<T> action);这个方法。第二个参数是一个Action的委托。
直接贴出代码了:
2 {
3 //源数组
4 int[] SourceArr = new int[]
5 {
6 0,1,2,3,4,5,6,7,8,9
7 };
8 //目标数组
9 int[] TargetArr = new int[SourceArr.Length];
10 int index=0;
11 //将施加于每个数组元素的“加工方法”
12 Action<int> DoubleElement = delegate(int element)
13 {
14 TargetArr[index++] = element * 2;
15 };
16 //完成源数组的“加工”
17 Array.ForEach<int>(SourceArr, DoubleElement);
18 //显示处理结果
19 Array.ForEach<int>(TargetArr, (elelm) => { Console.WriteLine(elelm); });
20
21 Console.ReadKey();
22 }
3.数组元素的排序
排序的方法很多,我就不多说了。我问介绍的一个排序肯定是不常用的。直接上代码了:


{
static void Main(string[] args)
{
MyClass[] Objs = new MyClass[10];
Random ran=new Random();
for (int i = 0; i < 10; i++)
Objs[i] = new MyClass { Value = ran.Next(1, 100) };
Comparison<MyClass> WhoIsGreater = delegate(MyClass x, MyClass y)
{
if (x.Value > y.Value)
return 1;
else
if (x.Value == y.Value)
return 0;
else
return -1;
};
Array.Sort<MyClass>(Objs,WhoIsGreater);
Array.ForEach<MyClass>(Objs,(obj)=>{Console.WriteLine(obj.Value);});
Console.ReadKey();
}
}
class MyClass
{
public int Value;
}
4.在多态数组中筛选特定类型数组
如果一个数组是object,这个数组称为“多态数组”
比如我定义一个 object[] obj = new object[] { 1,"hello",100,"string"};
打算在里面查询出所有字符串数组怎么办?
.net有一个IEnumerable 类型,
定义如下: public static IEnumerable<TResult> OfType<TResult>(this IEnumerable source);
数组基类Array实现IEnumerable<T>接口。可以使用OfType<T>方法从多态数组中选取字符串
IEnumerable<string> strs = obj.OfType<string>();
foreach (var item in strs)
{
Console.WriteLine(item);
}
5.检测数组中的元素是否满足某个条件
数组基类Array提供了相应的静态方法
public static bool TrueForAll<T>(T[] array, Predicate<T> match);
Predicate<T>是一个委托,返回bool值的方法,此方法代表数组元素必须满足的条件,其接收的参数就是数组元素自身。
例如:检测某整数是否小于100
Predicate<int> match=delegate(int value){
return value<100?true:false;
};
bool isLessthan100= Array.TrueForAll<int>(arr1, match);
Console.WriteLine(isLessthan100);
6.连动数组的排序
Array 有一个Sort 重载: public static void Sort<TKey, TValue>(TKey[] keys, TValue[] items);
假设有2个一样长的数组,(分别叫做keys和items),这2个数组的元素是一一对应的。keys数组第一个元素对应的是items第一个数组的元素。
并且这2个数组之间对应是连动关系的。
上述sort方法对应keys数组中的元素进行排序,同事会改变items数组的元素位置。
回家编辑...