Csharp/C Sharp by API/System/Array
Содержание
- 1 Array.AsReadOnly
- 2 Array.BinarySearch
- 3 Array.Clone
- 4 Array.ConvertAll
- 5 Array.Copy
- 6 Array.CopyTo
- 7 Array.Count
- 8 Array.CreateInstance
- 9 Array.Exists
- 10 Array.Find
- 11 Array.FindAll
- 12 Array.ForEach
- 13 Array.GetEnumerator()
- 14 Array.GetLength()
- 15 Array.GetLowerbound
- 16 Array.GetUpperBound
- 17 Array.IndexOf
- 18 Array.LastIndexOf
- 19 Array.Length
- 20 Array.Rank
- 21 Array.Resize
- 22 Array.Reverse
- 23 Array.Reverse(nums, 1, 3)
- 24 Array.Sort
- 25 Array.Sort(names, Comparer.DefaultInvariant)
- 26 Array.SyncRoot
Array.AsReadOnly
<source lang="csharp"> using System; using System.Collections.Generic; using System.Collections.ObjectModel;
public class Starter {
public static void Main() { int[] zArray = { 1, 2, 3, 4 }; zArray[1] = 10; ReadOnlyCollection<int> roArray = Array.AsReadOnly(zArray); foreach (int number in roArray) { Console.WriteLine(number); } roArray[1] = 2; // compile error }
}
</source>
Array.BinarySearch
<source lang="csharp"> using System; class MainClass {
public static void Main() { int[] intArray = {5, 2, 3, 1, 6, 9, 7, 14, 25}; Array.Sort(intArray); int index = Array.BinarySearch(intArray, 5); Console.WriteLine("Array.BinarySearch(intArray, 5) = " + index); }
}
</source>
Array.Clone
<source lang="csharp"> using System; using System.Collections.Generic; public class Starter {
public static void Main() { CommissionedEmployee[] salespeople = {new CommissionedEmployee("Bob"), new CommissionedEmployee("Ted"), new CommissionedEmployee("Sally")}; Employee[] employees = (Employee[])salespeople.Clone(); foreach (Employee person in employees) { person.Pay(); } }
} public class Employee {
public Employee(string name) { m_Name = name; } public virtual void Pay() { Console.WriteLine("Paying {0}", m_Name); } private string m_Name;
} public class CommissionedEmployee : Employee {
public CommissionedEmployee(string name) : base(name) { } public override void Pay() { base.Pay(); Console.WriteLine("Paying commissions"); }
}
</source>
Array.ConvertAll
<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text;
public class MainClass {
public static void Main() { string[] strArray = new string[] { "75.3", "25.999", "105.25" }; double[] doubleArray = Array.ConvertAll<string, double>(strArray, Convert.ToDouble); Console.Write("Converted to doubles: "); Array.ForEach<double>(doubleArray, delegate(double x) { Console.Write(x + " "); }); Console.WriteLine(); }
}
</source>
Array.Copy
<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852
- /
// Copy an array.
using System;
public class CopyDemo {
public static void Main() { int[] source = { 1, 2, 3, 4, 5 }; int[] target = { 11, 12, 13, 14, 15 }; int[] source2 = { -1, -2, -3, -4, -5 }; // Display source. Console.Write("source: "); foreach(int i in source) Console.Write(i + " "); Console.WriteLine(); // Display original target. Console.Write("Original contents of target: "); foreach(int i in target) Console.Write(i + " "); Console.WriteLine(); // Copy the entire array. Array.Copy(source, target, source.Length); // Display copy. Console.Write("target after copy: "); foreach(int i in target) Console.Write(i + " "); Console.WriteLine(); // Copy into middle of target. Array.Copy(source2, 2, target, 3, 2); // Display copy. Console.Write("target after copy: "); foreach(int i in target) Console.Write(i + " "); Console.WriteLine(); }
}
</source>
Array.CopyTo
<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text;
public class MainClass {
public static void Main() { int[] srcArray = new int[] { 1, 2, 3 }; int[] destArray = new int[] { 4, 5, 6, 7, 8, 9 }; Array.Copy(srcArray, destArray, srcArray.Length); srcArray.CopyTo(destArray, 0); srcArray.CopyTo(destArray, 3); Array.Copy(srcArray, 0, destArray, 2, srcArray.Length); }
}
</source>
Array.Count
<source lang="csharp"> using System; using System.Collections;
class MainClass {
public static void Main() { ArrayList al = new ArrayList(); Console.WriteLine("Adding 6 elements"); al.Add("C"); al.Add("A"); al.Add("E"); al.Add("B"); al.Add("D"); al.Add("F"); Console.WriteLine("Add enough elements to force ArrayList to grow. Adding 20 more elements"); for(int i=0; i < 20; i++) al.Add((char)("a" + i)); Console.WriteLine("Current capacity: " + al.Capacity); Console.WriteLine("Number of elements after adding 20: " + al.Count); Console.Write("Contents: "); foreach(char c in al) Console.Write(c + " "); Console.WriteLine("\n"); }
}
</source>
Array.CreateInstance
<source lang="csharp"> using System; using System.Reflection; public class Starter {
public static void Main(string[] argv) { Assembly executing = Assembly.GetExecutingAssembly(); Type t = executing.GetType(argv[0]); Array zArray = Array.CreateInstance(t, argv.Length - 2); for (int count = 2; count < argv.Length; ++count) { System.Object obj = Activator.CreateInstance(t, new object[] {argv[count]}); zArray.SetValue(obj, count - 2); } foreach (object item in zArray) { MethodInfo m = t.GetMethod(argv[1]); m.Invoke(item, null); } }
} public class MyClass {
public MyClass(string info) { m_Info = "MyClass " + info; } public void ShowInfo() { Console.WriteLine(m_Info); } private string m_Info;
} public class YClass {
public YClass(string info) { m_Info = "YClass " + info; } public void ShowInfo() { Console.WriteLine(m_Info); } private string m_Info;
} public class XClass {
public XClass(string info) { m_Info = "XClass " + info; } public void ShowInfo() { Console.WriteLine(m_Info); } private string m_Info;
}
</source>
Array.Exists
<source lang="csharp">
using System;
class MainClass {
static bool isCriteria(int v) { if(v > 1) return true; return false; } public static void Main() { int[] nums = { 1, 4, -1, 5, -9 }; Console.Write("Contents of nums: "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); if(Array.Exists(nums, isCriteria)) { Console.WriteLine("nums contains a negative value."); // Now, find first negative value. int x = Array.Find(nums, isCriteria); Console.WriteLine("First negative value is : " + x); } }
}
</source>
Array.Find
<source lang="csharp"> using System;
class MainClass {
static bool isCriteria(int v) { if(v > 1) return true; return false; } public static void Main() { int[] nums = { 1, 4, -1, 5, -9 }; Console.Write("Contents of nums: "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); if(Array.Exists(nums, isCriteria)) { Console.WriteLine("nums contains a negative value."); // Now, find first negative value. int x = Array.Find(nums, isCriteria); Console.WriteLine("First negative value is : " + x); } }
}
</source>
Array.FindAll
<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; public class MainClass {
public static void Main() { int[] zArray = { 1, 2, 3, 1, 2, 3, 1, 2, 3 }; Predicate<int> match = new Predicate<int>(MethodA<int>); int[] answers = Array.FindAll(zArray, match); foreach (int answer in answers) { Console.WriteLine(answer); } } public static bool MethodA<T>(T number) where T : IComparable { int result = number.rupareTo(3); return result == 0; }
}
</source>
Array.ForEach
<source lang="csharp"> using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Text; using System;
public class MainClass {
public static void Main() { int[] array = new int[] { 8, 2, 3, 5, 1, 3 }; Array.ForEach<int>(array, delegate(int x) { Console.Write(x + " "); }); Console.WriteLine(); }
}
</source>
Array.GetEnumerator()
<source lang="csharp">
using System; using System.Collections; class MainClass {
static void Main() { int[] intArray = { 10, 11, 12, 13 }; IEnumerator ie = intArray.GetEnumerator(); while (ie.MoveNext() == true) { int i = (int)ie.Current; Console.WriteLine("{0}", i); } }
}
</source>
Array.GetLength()
<source lang="csharp"> using System; class MainClass {
public static void Main() { string[,] names = { {"J", "M", "P"}, {"S", "E", "S"}, {"C", "A", "W"}, {"G", "P", "J"}, }; int numberOfRows = names.GetLength(0); int numberOfColumns = names.GetLength(1); Console.WriteLine("Number of rows = " + numberOfRows); Console.WriteLine("Number of columns = " + numberOfColumns); }
}
</source>
Array.GetLowerbound
<source lang="csharp"> using System; public class MainClass {
static void Main() { int[,] twoDim = { {1, 2, 3}, {4, 5, 6}, {7, 8, 9} }; for( int i = twoDim.GetLowerBound(0); i <= twoDim.GetUpperBound(0); ++i ) { for( int j = twoDim.GetLowerBound(1); j <= twoDim.GetUpperBound(1); ++j ) { Console.WriteLine( twoDim[i,j] ); } } }
}
</source>
Array.GetUpperBound
<source lang="csharp">
using System; public class ArrayTest {
public static void Main( ) { int[] array_1 = new int[5]; for( int i = array_1.GetLowerBound(0); i <= array_1.GetUpperBound(0); i++) array_1[i] = i+1; for( int j = array_1.GetLowerBound(0); j <= array_1.GetUpperBound(0); j++) Console.WriteLine("array_1[{0}] = {1}", j, array_1[j]); }
}
</source>
Array.IndexOf
<source lang="csharp"> using System; class MainClass {
public static void Main() { int[] intArray = {1, 2, 1, 3}; Console.WriteLine("intArray:"); for (int i = 0; i < intArray.Length; i++) { Console.WriteLine("intArray[" + i + "] = " + intArray[i]); } int index = Array.IndexOf(intArray, 1); Console.WriteLine("Array.IndexOf(intArray, 1) = " + index); index = Array.LastIndexOf(intArray, 1); Console.WriteLine("Array.LastIndexOf(intArray, 1) = " + index); }
}
</source>
Array.LastIndexOf
<source lang="csharp"> using System; class MainClass {
public static void Main() { int[] intArray = {1, 2, 1, 3}; Console.WriteLine("intArray:"); for (int i = 0; i < intArray.Length; i++) { Console.WriteLine("intArray[" + i + "] = " + intArray[i]); } int index = Array.IndexOf(intArray, 1); Console.WriteLine("Array.IndexOf(intArray, 1) = " + index); index = Array.LastIndexOf(intArray, 1); Console.WriteLine("Array.LastIndexOf(intArray, 1) = " + index); }
}
</source>
Array.Length
<source lang="csharp">
using System;
class MainClass {
public static void Main() { int[,,] nums = new int[10, 5, 6]; Console.WriteLine("Length of nums is " + nums.Length); }
}
</source>
Array.Rank
<source lang="csharp"> using System; class MainClass {
public static void PrintArray(int[] arr) { for (int i = 0; i < arr.Length; ++i) Console.WriteLine("OneDArray Row {0} = {1}", i, arr[i]); } public static void PrintArrayRank(int[,] arr) { Console.WriteLine("PrintArrayRank: {0} dimensions", arr.Rank); }
public static void Main() { int[] x = new int[10]; for (int i = 0; i < 10; ++i) x[i] = i; PrintArray(x); int[,] y = new int[10, 20]; for (int k = 0; k < 10; ++k) for (int i = 0; i < 20; ++i) y[k, i] = i * k; PrintArrayRank(y); }
}
</source>
Array.Resize
<source lang="csharp"> using System; public class Starter {
public static void Main() { int[] zArray = { 1, 2, 3, 4 }; Array.Resize<int>(ref zArray, 8); foreach (int number in zArray) { Console.WriteLine(number); } }
}
</source>
Array.Reverse
<source lang="csharp"> /* Learning C# by Jesse Liberty Publisher: O"Reilly ISBN: 0596003765
- /
using System; namespace ReverseAndSort { public class TesterReverseAndSort { public static void DisplayArray(object[] theArray) { foreach (object obj in theArray) { Console.WriteLine("Value: {0}", obj); } Console.WriteLine("\n"); } public void Run() { String[] myArray = { "Who", "is", "John", "Galt" }; Console.WriteLine("Display myArray..."); DisplayArray(myArray); Console.WriteLine("Reverse and display myArray..."); Array.Reverse(myArray); DisplayArray(myArray); String[] myOtherArray = { "We", "Hold", "These", "Truths", "To", "Be", "Self", "Evident", }; Console.WriteLine("Display myOtherArray..."); DisplayArray(myOtherArray); Console.WriteLine("Sort and display myOtherArray..."); Array.Sort(myOtherArray); DisplayArray(myOtherArray); } [STAThread] static void Main() { TesterReverseAndSort t = new TesterReverseAndSort(); t.Run(); } } } </source>
Array.Reverse(nums, 1, 3)
<source lang="csharp"> /* C#: The Complete Reference by Herbert Schildt Publisher: Osborne/McGraw-Hill (March 8, 2002) ISBN: 0072134852
- /
// Reverse an array.
using System;
public class ReverseDemo {
public static void Main() { int[] nums = { 1, 2, 3, 4, 5 }; // Display original order. Console.Write("Original order: "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); // Reverse the entire array. Array.Reverse(nums); // Display reversed order. Console.Write("Reversed order: "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); // Reverse a range. Array.Reverse(nums, 1, 3); // Display reversed order. Console.Write("Range reversed: "); foreach(int i in nums) Console.Write(i + " "); Console.WriteLine(); }
}
</source>
Array.Sort
<source lang="csharp"> using System; class MainClass {
public static void Main() { char[] charArray = {"w", "e", "l", "c", "o", "m", "e"}; Array.Sort(charArray); // sort the elements Console.WriteLine("Sorted charArray:"); for (int i = 0; i < charArray.Length; i++) { Console.WriteLine("charArray[" + i + "] = " + charArray[i]); } }
}
</source>
Array.Sort(names, Comparer.DefaultInvariant)
<source lang="csharp"> using System; using System.Collections.Generic; using System.Text; using System.Threading; using System.Collections; using System.Globalization; class Program {
static void DisplayNames(IEnumerable e) { foreach (string s in e) Console.Write(s + " - "); } static void Main(string[] args) { string[] names = {"Alabama", "Texas", "Washington", "Virginia", "Wisconsin", "Wyoming", "Kentucky", "Missouri", "Utah", "Hawaii", "Kansas", "Lousiana", "Alaska", "Arizona"}; Thread.CurrentThread.CurrentCulture = new CultureInfo("fi-FI"); Array.Sort(names); DisplayNames(names); Array.Sort(names, Comparer.DefaultInvariant); Console.WriteLine("\nsorted with invariant culture..."); DisplayNames(names); }
}
</source>
Array.SyncRoot
<source lang="csharp"> using System; using System.Threading; public class Starter {
public static void Main() { Array.Sort(zArray); Thread t1 = new Thread(new ThreadStart(DisplayForward)); Thread t2 = new Thread(new ThreadStart(DisplayReverse)); t1.Start(); t2.Start(); } private static int[] zArray = { 1, 5, 4, 2, 4, 2, 9, 10 }; public static void DisplayForward() { lock (zArray.SyncRoot) { Console.Write("\nForward: "); foreach (int number in zArray) { Console.Write(number); } } } public static void DisplayReverse() { lock (zArray.SyncRoot) { Array.Reverse(zArray); Console.Write("\nReverse: "); foreach (int number in zArray) { Console.Write(number); } Array.Reverse(zArray); } }
}
</source>