Heim >Web-Frontend >js-Tutorial >Erster Blick auf C# aus JS-Perspektive
Als ich begann, ein Projekt zu erstellen, bestand mein Ziel darin, ein Spiel zu entwickeln, das möglicherweise 3D-Elemente enthält, interaktiv ist und insbesondere auf mobilen Plattformen gespielt werden kann. Ich wollte auch KI in das Spiel integrieren, um Tiefe und Komplexität zu verleihen. Dies führte mich natürlich dazu, C# zu erkunden – eine Sprache, die häufig in der Unity-Spiele-Engine verwendet wird. Obwohl ich in diesem Beitrag nicht auf die Besonderheiten von Unity selbst eingehen werde, möchte ich mich darauf konzentrieren, warum ich mich für C# entschieden habe und wie es im Vergleich zu JavaScript aus meiner Sicht als jemand mit JavaScript-Hintergrund abschneidet.
Der Hauptgrund, warum ich mich für C# entschieden habe, ist, dass Unity, die von mir gewählte Spiel-Engine, stark auf C# als Hauptprogrammiersprache basiert. Während es andere Sprachen gibt, die Sie möglicherweise in Unity verwenden könnten, wird C# bei weitem am häufigsten unterstützt und empfohlen. Es handelt sich um eine moderne, objektorientierte Programmiersprache, die von Microsoft entwickelt wurde und häufig in einer Vielzahl von Anwendungen verwendet wird, darunter Desktop-Software, Webanwendungen (über ASP.NET) und – Natürlich – Spiele mit Unity.
C# ist Teil des größeren .NET-Ökosystems, das eine riesige Bibliothek an Ressourcen und Frameworks für die Erstellung alles von kleinen Dienstprogrammen bis hin zu großen Unternehmensanwendungen bietet. Die Sprache selbst wurde im Hinblick auf Einfachheit, Leistungsfähigkeit und Typsicherheit entwickelt. Dies macht es zu einer vielseitigen Wahl für viele Arten von Projekten. Aber in diesem Beitrag möchte ich mich besonders auf den Aspekt der Typsicherheit konzentrieren und darauf, warum sie C# auszeichnet, insbesondere im Vergleich zu JavaScript.
C# ist eine statisch typisierte Sprache, was bedeutet, dass Variablentypen (wie int, bool, string) zur Kompilierungszeit definiert werden. Da C# statisch typisiert ist, kann der Compiler im Voraus mehr Optimierungsarbeiten durchführen. Seine Typsicherheit-Funktion, bei der Variablentypen streng definiert sind, ermöglicht es dem Compiler, viele Arten von Fehlern zu erkennen, bevor der Code überhaupt ausgeführt wird, und trägt dazu bei, dass der Code besser wartbar ist. JavaScript ist dynamisch typisiert und erfordert aufgrund eines Prozesses namens Typzwang mehr Laufzeitprüfungen, was insbesondere bei großen oder komplexen Anwendungen zusätzlichen Aufwand verursacht. Dies ist einer der Gründe, warum C# schneller sein kann. Der Hauptleistungsvorteil von C# liegt jedoch in rechenintensiven und Multithread-Aufgaben (z. B. der parallelen Ausführung verschiedener Teile des Spiels).
let num = 5; let str = "10"; console.log(num + str); // Outputs "510" (string concatenation instead of numeric addition) str = 10; // Assign a string to a variable and later assign a number to the same variable
int x = 10; // Whole integer number double pi = 3.14159; // Decimals 64-bit floating point, end with d but not necessary float y = 10.2f; // Decimals 32-bit floating point, have to end with f decimal price = 19.99m; // 128-bit decimal, have to end with m, for precise monetary calculations or any financial stuff bool isValid = true; //Boolean true or false char grade = 'A'; //A single character, of 16-bit Unicode character string name = "John"; //special case, is actually a reference type
Wie wir wissen, werden Variablen in JavaScript mit var, const und let deklariert. Außerdem unterscheidet JavaScript nicht zwischen int und float; es ist nur eine Zahl. Daher verfügt C# nicht über NaN. Darüber hinaus ist String in JavaScript ein primitiver Typ (ähnlich einem Werttyp in C#), in C# jedoch ein Referenztyp.
In C# können Werttypen standardmäßig nicht null sein, aber Sie können nullfähige Typen verwenden, um zu ermöglichen, dass Werttypen null zugewiesen werden. null ist nur für Referenztypen (wie Zeichenfolgen, Objekte und benutzerdefinierte Klassen) zulässig. Standardmäßig werden Referenztypen auf null initialisiert. Um zu ermöglichen, dass Werttypen NULL-Werte zulassen, verwenden Sie das ? Syntax (wie int?, double?, bool?).
string name = null; // This is valid. Person person = null; // This is also valid if 'Person' is a class. int? number = null; // Explicitly allows null since nullable type is enabled int number = null; // Error: Cannot assign null to a non-nullable value type
JavaScript kennt kein Konzept für nullfähige Typen wie C#; Alles kann technisch gesehen null oder undefiniert sein.
In beiden Sprachen wirken sich beim Umgang mit Referenztypen alle durch eine Referenz an den Daten vorgenommenen Änderungen auf alle anderen Referenzen aus, die auf dieselben Daten im Speicher verweisen. Allerdings ist C# stärker stark typisiert und Arrays haben eine feste Größe, es sei denn, Sie verwenden Sammlungen wie List
C#-Referenztypen: Objekt, Klasse, Delegat, Array.
JavaScript-Referenztypen: Objekt, Array, Funktion.
int[] numbers = new int[] { 1, 2, 3 }; numbers[3] = 4; // Error: Index out of bounds because the array size is fixed
let numbers = [1, 2, 3]; numbers.push(4); // Adds 4 to the end of the array, dynamically resizing it console.log(numbers); // [1, 2, 3, 4]
In C# bezieht sich Datenkonvertierung auf den Prozess der Konvertierung eines Datentyps in einen anderen und kann im Wesentlichen auf zwei Arten erfolgen: implizit und explizit Konvertierungen.
C# bietet außerdem eine integrierte Methode für sichere Typkonvertierungen, insbesondere bei der Konvertierung zwischen Typen, die möglicherweise nicht automatisch umgewandelt werden. Darüber hinaus erfordern nullfähige Typen eine zusätzliche Behandlung, um mit Nullwerten umzugehen. Die ordnungsgemäße Datenkonvertierung ist entscheidend, um die Datenintegrität sicherzustellen, Laufzeitfehler zu vermeiden und die Leistung bei der Arbeit mit verschiedenen Datentypen in C# aufrechtzuerhalten.
Alles in allem eignet sich JavaScript zwar aufgrund seiner Flexibilität und Dynamik hervorragend für schnelles Prototyping und Webentwicklung, C# hat jedoch einen klaren Leistungsvorteil, wenn es um komplexere oder rechenintensivere Aufgaben geht. Dies gilt insbesondere für die Spieleentwicklung, wo Sie möglicherweise mit 3D-Grafiken, KI, Physiksimulationen und anderen Hochleistungsoperationen umgehen müssen.
Denken Sie daran, Ihre Semikolons (;) hinzuzufügen, um jede Codezeile in C# zu beenden! Ich vergesse es immer wieder, aber sie sind in C# unbedingt erforderlich.
Hier finden Sie einen kurzen Link zur offiziellen Dokumentation zu „Reservierte Schlüsselwörter“ sind Wörter, die in der Sprache verwendet werden und daher bereits über spezifische Definitionen verfügen, die nicht umgeschrieben werden sollten
Als Nächstes: Anleitung zum Aufschlüsseln und Verstehen von C#-Fehlern (in Kürze verfügbar …)
Das obige ist der detaillierte Inhalt vonErster Blick auf C# aus JS-Perspektive. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!