![]() |
Re: .net-Strategie von Microsoft (?)
Zitat:
Zitat:
|
Re: .net-Strategie von Microsoft (?)
Ich möchte nochmal ein paar Dinge richtigstellen.
Zitat:
|
Re: .net-Strategie von Microsoft (?)
@OregonGhost:
Nein, es gibt keine Zeiger in C#. Natürlich kann man in C++ wenn man da mit .NET arbeitet Zeiger verwenden. Gar keine Frage. Visual C++ is ja auch ein echter Compiler, und erstellt reine Windowsanwendungen. C# ist was anderes, ein plattformunabhängiges System für virtuelle Maschinen. Es gibt keine Zeiger in C#. Nehmen wir z.B. mal diese C-Code-Schnippsel: (1) int (*arrayXYZ)[10]; (2) int *(arrayXYZ[10]); (3) int *arrayXYZ[10]; Wo sind da die Unterschiede? Diese Frage wirst du mit C# nicht lösen können, weil C# keine Zeiger unterstützt. Probiers ruhig aus. In C++ funktionieren diese 3 Anweisungen einwandfrei, in C# lässt sich der Code nicht compilern. Noch ein Beispiel, das in C# nicht funktioniert: pi = arrayXYZ; *(pi + 12) = 178; Viele Grüße, Macci |
Re: .net-Strategie von Microsoft (?)
Zitat:
Beweis:
Code:
class Program {
unsafe public static void Test(int[] arrayXYZ) { fixed(int* pi = &arrayXYZ[0]) { *(pi + 12) = 178; } } public static void Main() { int[] bar = new int[13]; foreach(int i in bar) Console.Write("{0}:", i); Console.WriteLine(); Test(bar); foreach(int i in bar) Console.Write("{0}:", i); } } Ausgabe 0:0:0:0:0:0:0:0:0:0:0:0:0: 0:0:0:0:0:0:0:0:0:0:0:0:178: q.e.d. |
Re: .net-Strategie von Microsoft (?)
Ja, jedoch ist das nicht der Code, den ich geschrieben habe. Denn ...
Zitat:
Zitat:
Außerdem funktioniert dein Code nur in einem als unsafe gekennzeichnetem Bereich, und ein extra Compilerschalter ist erforderlich, damit das überhaupt erlaubt ist. Aus der C#-Hilfe: Zitat:
|
Re: .net-Strategie von Microsoft (?)
Und? Du hast behauptet es geht nicht, aber es geht doch, wenn man unbedingt will.
Wenn man abartiges Zeugs wie Zeiger verwenden will, dann geht das doch. Aber MS legt einem halt Steine in den Weg, weil die wohl auch endlich drauf gekommen sind, das Zeiger Schrott sind. |
Re: .net-Strategie von Microsoft (?)
Nur so rein aus Interesse - ist das schlimm?
Also geht dadurch Funktionalität verloren, sodass man bestimmte Aufgaben nicht in C# erledigen kann? imho nein ;) Zitat:
Nur weil man etwas in einer verwandten Sprache machen kann, aber in dieser nicht, sollte man nicht gleich die Sprache als schlecht beiseite legen. Dann dürte ja z.B. Java gar nicht existieren :mrgreen: |
Re: .net-Strategie von Microsoft (?)
Zeiger sind eine nützliche Sache :-) Man kann damit sehr viel Gutes machen, allerdings auch sehr verwirrende Sachen. ;-)
Aber an einen unsafe-Block hatte ich gar nicht gedacht, da geht es natürlich schon, hast recht. @jfheins: Naja wollte damit auch nicht sagen, dass es sooo schlimm ist, sondern nur dass mir die schöne Zeigerarithmetik irgendwie fehlt. Viele Programmierer lassen sich halt nicht gern was wegnehmen, dass sie liebgewonnen haben *g* |
Re: .net-Strategie von Microsoft (?)
Referenzen sind aber Zeigern vorzuziehen auch unter Win32
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz