/ / Ako to kompilovať? c # - c #, kompilácia

Ako to zostaviť? c# - c#, kompilácie

object obj = new object[] { new object(), new object() };

Ako to kompilovať? Zdá sa to mätúce.

Zdá sa, že by to malo byť

object[] obj = new object[] { new object(), new object() };

alebo

object[] obj = { new object(), new object() };

odpovede:

3 pre odpoveď č. 1

Kompiluje, pretože "objekt" môže byť čokoľvek, preto môže byť odkazom na pole objektu. Nižšie uvedený kód pomocou reťazcov, aby sa rozlíšenie trochu jasnejšie, môže pomôcť. takže:

List<string> myStrings = new List<string>() { "aa", "bb" };
// Now we have an array of strings, albeit an empty one
string[] myStringsArray = myStrings.ToArray();
// Still a reference to myStringsArray, just held in the form of an object
object stillMyStringsArray = (object)myStringsArray;

// Get another array of strings and hold in the form of an object
string[] anotherArray = myStrings.ToArray();
object anotherArrayAsObject = (object)anotherArray;

// Store both our objects in an array of object, in the form of an object
object myStringArrays = new object[] { stillMyStringsArray, anotherArrayAsObject };

// Convert myStringArrays object back to an array of object and take the first item in the array
object myOriginalStringsArrayAsObject = ((object[])myStringArrays)[0];
// Conver that first array item back into an array of strings
string[] myOriginalStringsArray = (string[])myOriginalStringsArrayAsObject;

V podstate môže byť objekt vždy odkazomna čokoľvek, dokonca aj pole objektu. Objekt sa nezaujíma o to, čo je v ňom vložené, takže na konci kódu tam máme reťazec. Spustiť, že kód hore v Visual Studio, pustiť niekoľko zarážky a sledovať. Dúfajme, že vám pomôže pochopiť, prečo je zadaný kód platný =)


6 pre odpoveď č. 2

objekt je základom pre všetko. čokoľvek môže byť priradený k premennej typu objektu.


2 pre odpoveď č. 3

v

object obj = new object[] { ...}

Pravá časť poskytuje odkaz na typ object[] ale tento typ, podobne ako akýkoľvek iný typ, je kompatibilný s object.


1 pre odpoveď č. 4

object obj = ... tu môže odkazovať na kolekciu. Nie je povedané, že rozdiel použitia "objektu" tu odkazuje na rovnaký typ objektu.


1 pre odpoveď č. 5

Pole objektov je objekt, ale je to naozaj divné.