Heim > Artikel > Backend-Entwicklung > Benutzerdefinierte C#-Typ-Arrays und Array-Klasse
Array eines benutzerdefinierten Typs
using System; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { Person[] myPersons = new Person[2]; myPersons[0] = new Person("Lilian", "Chen"); myPersons[1] = new Person("1", "2"); Console.WriteLine(myPersons[0].ToString()); Console.WriteLine(myPersons[1].ToString()); // 对自定义类型使用数组初始化器 Person[] persons = new Person[] {new Person("a", "b"), new Person("c", "d")}; Console.WriteLine(persons[1].ToString()); Console.ReadLine(); } } public class Person { public Person() { } public Person(string firstName, string lastName) { this.FirstName = firstName; LastName = lastName; } public string FirstName { get; set; } public string LastName { get; set; } public override string ToString() { return String.Format("{0} {1}", FirstName, LastName); } } }
Hinweis: Wenn es sich bei den Elementen im Array um Referenztypen handelt, muss für jedes Array-Element Speicher zugewiesen werden.
myPersons ist eine auf dem Stapel gespeicherte Variable, die auf ein Array von Person-Elementen verweist, die auf dem verwalteten Heap gespeichert sind. Jedes Element im Array verweist auf ein Person-Objekt.
Erstellen eines Arrays
Die Verwendung von [] zum Deklarieren eines Arrays ist eine Notation für die Verwendung der Array-Klasse in C#. Ein neues Objekt, das von der abstrakten Basis abgeleitet wird Das Klassenarray wird im Hintergrund erstellt. Dadurch können Sie die von der Array-Klasse definierten Methoden und Eigenschaften für jedes C#-Array verwenden.
Die Array-Klasse ist eine abstrakte Klasse, daher können Sie den Konstruktor nicht zum Erstellen eines Arrays verwenden. Aber zusätzlich zum Erstellen einer Array-Instanz mit der C#-Syntax können Sie ein Array auch mit der statischen Methode CreateInstance() erstellen (die verwendet werden kann, wenn der Typ des Elements nicht im Voraus bekannt ist).
using System; namespace ConsoleApplication5 { class Program { static void Main(string[] args) { // CreateInstance 方法的第一个参数是元素的类型,第二个参数是数组的大小 Array intArray = Array.CreateInstance(typeof(int), 5); for (int i = 0; i < intArray.Length; i++) { // 使用 SetValue() 方法设置值 intArray.SetValue(i, i); } for (int i = 0; i < intArray.Length; i++) { // 使用 GetValue() 方法读取值 Console.WriteLine(intArray.GetValue(i)); Console.ReadLine(); } // 将已经创建的数组强制转换成声明为 int[] 的数组 int[] intArray1 = (int[])intArray; Console.WriteLine(intArray1.Length); } } }
Verwenden Sie die Methode CreateInstance(), um mehrdimensionale Arrays und Arrays zu erstellen, die nicht 0-basiert sind:
using System; namespace ConsoleApplication4 { class Program { static void Main(string[] args) { int[] lengths = { 2, 3 }; int[] lowerBounds = { 1, 10 }; Array racers = Array.CreateInstance(typeof(Person), lengths, lowerBounds); racers.SetValue(new Person("a", "b"), 1, 10); racers.SetValue(new Person("c", "d"), 1, 11); racers.SetValue(new Person("e", "f"), 1, 12); racers.SetValue(new Person("g", "h"), 2, 10); racers.SetValue(new Person("i", "j"), 2, 11); racers.SetValue(new Person("k", "l"), 2, 12); Person[,] racers1 = (Person[,])racers; Person first = racers1[1, 10]; } } public class Person { public Person() { } public Person(string firstName, string lastName) { this.FirstName = firstName; LastName = lastName; } public string FirstName { get; set; } public string LastName { get; set; } public override string ToString() { return String.Format("{0} {1}", FirstName, LastName); } } }
Kopieren Sie das Array
1) Wenn die Elemente des Arrays Werttypen sind, werden alle Werte kopiert
int[] intArray1 = { 1, 2 }; // 如果删掉 “(int[])” 会有 Error “Cannot implicitly convert type ‘object’ to 'int[]'” int[] intArray2 = (int[]) intArray1.Clone
Wenn das Array Referenztypen enthält, werden die Elemente nicht kopiert, sondern nur die Referenzen werden kopiert
Wenn Sie beatlesClone ändern Das Attribut eines Elements ändert das entsprechende Objekt in beatles.
Person[] beatles = { new Person("John", "Lennon"), new Person("Paul", "McCartney") }; Person[] beatlesClone = (Person[])beatles.Clone();
Weitere Artikel zu benutzerdefinierten C#-Typ-Arrays und Array-Klassen finden Sie auf der chinesischen PHP-Website!