frage zu arrays



  • Tankian schrieb:

    Natürlich ist die Represäntation nach aussen hin anders. Aber intern
    könnte der CLR doch vllt sogar egal sein ob es ein Wertetyp oder Referenztyp
    ist. Vllt ist intern ein Wertetyp sogar nur ein Referenztyp, etc .. Sind zwar
    alles Mutmaßungen, aber damit sollte klar werden, dass man eben nicht mit
    absolut 100% Sicherheit sagen kann, was die CLR intern alles erledigt.

    Nein, Value Types sind nicht intern Reference Types. 🙄

    Woher willst du wissen, dass die CLR eine Konvertierung von char[] nach object[]
    nicht eh wieder so implementiert wie es bereits vorgeschlagen wurde (Boxen in
    einer Schleife).

    Du schreibst doch den CIL Code selber. Tust du dort sowas? Nein? Dann ist es auch nicht drin.

    Der Ausgangscode in C#:

    int[] intArr = { ... };   // ob char oder int is ja egal ..
    

    Die restlichen Aufrufe von Console.WriteLine() waren ja nur für die Ausgabe
    zuständig, damit ich zeigen konnte, dass auch wirklich 3, 5 und 7 in objArr
    stehen.

    Jetzt würde ich aber gerne wissen, inwiefern
    mein Code am Thema vorbeiging ..

    Nein. Ob char oder int ist nicht egal, weil sizeof(char) != sizeof(int).
    Ja geil. Da stehen wirklich 3, 5 und 7 drin. SUPER! Caste das jetzt bitte in ein Object[] und liefer mir die Objekte, die das Array dann in referenziert.

    Checkst du's nicht? Oder bist du uneinsichtig? Wie auch immer, für mich ist das hier beendet, ist doch lächerlich. Du gibst ja selber zu, dass der C++ Code undefiniertes Verhalten hätte. Aber wie zum Beweis, dass es in .Net geht zeigst du mir, dass 3, 5 und 7 drin stehen, also dein Object* den Wert 3 und 5 und 7 hat. Das damit referenzierte Objekt, welches es gar nicht gibt, interessiert dich nicht und dass das Array als Object[] völlig nutzlos ist, was ich dir die ganze Zeit sage, interessiert dich auch nicht. Stattdessen zeigst du mir, dass wenn du es nicht änderst immer noch das Bitmuster von 3, 5 und 7 drin ist.
    Wenn das alles ist, was du mir zu sagen hast, enttäusche ich dich nur ungern, aber das hätte ich fast auch vermutet.

    </Diskussion>



  • Nein. Ob char oder int ist nicht egal, weil sizeof(char) != sizeof(int).

    Ich hab meinen IL-Code bereits mit char, int und double getestet. Jedesmal
    hat er funktioniert. Hast noch einen Vorschlag, mit was ich testen soll ? 🙄

    Du schreibst doch den CIL Code selber. Tust du dort sowas? Nein? Dann ist es auch nicht drin.

    Na und, ich schreibe ja auch nicht in den IL-Code, dass die Variable in das
    Register kommt, jene Variable in jenes Register und der CPU dann mitteile
    zu addieren ..



  • Tankian schrieb:

    Ich hab meinen IL-Code bereits mit char, int und double getestet. Jedesmal
    hat er funktioniert. Hast noch einen Vorschlag, mit was ich testen soll ? 🙄

    Sag ich doch die ganze Zeit. Mach ein char[] zu nem object[] und benutze die Objekte darin dann, z.B. alle serialisieren und in Datei schreiben.



  • Optimizer schrieb:

    Mach ein char[] zu nem object[] und benutze die Objekte darin dann, z.B. alle serialisieren und in Datei schreiben.

    Hmm ..

    Wahrscheinlich wirds wohl doch typsicher sein, denn kaun greif ich von
    C# aus auf so ein object[] Array zu, bekomm ich ne ExecutingEngineException.
    Wobei es eben nach wie vor klappt, wenn ich alles in IL code. Wahrscheinlich
    ist IL doch etwas freizügiger mit den Casts, als es sein sollte ..

    Nur wunderts mich immernoch, dass es in IL
    mit char, int und decimal klappt ..

    Naja, tut mir leid für deine Zeit ..


Anmelden zum Antworten