ホームページ >ウェブフロントエンド >jsチュートリアル >JS の観点から見た C# の概要
私がプロジェクトの作成を開始したときの目標は、3D 要素を備え、インタラクティブで、特にモバイル プラットフォームでプレイできる可能性のあるゲームを構築することでした。また、ゲームに AI を統合して、深みと複雑さを加えたいと考えていました。当然のことながら、これにより、Unity ゲーム エンジンで一般的に使用される言語である C# を検討するようになりました。この投稿では Unity 自体の詳細には立ち入りませんが、私が C# を選んだ理由と、JavaScript のバックグラウンドを持つ私の観点から C# が JavaScript とどのように比較されるかに焦点を当てたいと思います。
私が C# を使用することに決めた主な理由は、私が選んだゲーム エンジンである Unity が主要なプログラミング言語として C# に大きく依存しているためです。 Unity で使用できる可能性のある言語は他にもありますが、C# が最も広くサポートされており、推奨されています。これは、Microsoft によって開発された最新の オブジェクト指向プログラミング 言語であり、デスクトップ ソフトウェア、Web アプリケーション (ASP.NET 経由) などのさまざまなアプリケーションで一般的に使用されています。もちろん、Unity を使用したゲームです。
C# は、より大規模な .NET エコシステムの一部であり、小規模なユーティリティから大規模なエンタープライズ アプリケーションまで、あらゆるものを構築するためのリソースとフレームワークの膨大なライブラリを提供します。言語自体は、シンプルさ、パワー、そしてタイプ セーフを念頭に置いて設計されました。これにより、さまざまな種類のプロジェクトに多用途に使用できます。しかし、この投稿では、タイプ セーフティの側面と、それが特に JavaScript と比較して C# を際立たせる理由に特に焦点を当てたいと思います。
C# は静的に型付けされた言語です。つまり、変数の型 (int、bool、string など) はコンパイル時に定義されます。 C# は静的に型指定されるため、コンパイラーは事前にさらに多くの最適化作業を実行できます。変数の型が厳密に定義されている タイプ セーフティ 機能により、コンパイラーはコードが実行される前に多くの種類のエラーを検出できるようになり、コードの保守性が向上します。 JavaScript は動的に型指定されているため、型強制と呼ばれるプロセスにより、より多くの実行時チェックが必要になります。これにより、特に大規模または複雑なアプリケーションでオーバーヘッドが追加されます。これが、C# が高速になる理由の 1 つです。ただし、C# の主なパフォーマンスの利点は、計算集約型 と マルチスレッド タスク (ゲームの異なる部分を並行して実行するなど) にあります。
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
ご存知のとおり、JavaScript では変数は var、const、let で宣言されます。また、JavaScript には int と float の区別がありません。それは単なる数字です。したがって、C# には NaN がありません。さらに、JavaScript では、文字列はプリミティブ型 (C# の値型と同様) ですが、C# では参照型です。
C# では、デフォルトでは値の型を null にすることはできませんが、null 許容型を使用して、値の型に null を割り当てることができます。 null は参照型 (文字列、オブジェクト、カスタム クラスなど) にのみ許可されます。デフォルトでは、参照型は null に初期化されます。値の型を NULL 可能にするには、? を使用します。構文 (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 には、C# のような null 許容型の概念がありません。技術的にはすべて null または未定義にすることができます。
どちらの言語でも、参照型 を扱う場合、1 つの参照を通じてデータに加えられた変更は、メモリ内の同じデータを指す他のすべての参照に影響します。ただし、C# はより厳密に型指定されており、List
C# 参照型: オブジェクト、クラス、デリゲート、配列。
JavaScript 参照タイプ: オブジェクト、配列、関数。
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]
C# では、データ変換 は、あるデータ型を別のデータ型に変換するプロセスを指し、暗黙的 と 明示的 コンバージョン
全体として、JavaScript の柔軟性と動的な性質により、迅速なプロトタイピングや Web 開発には最適ですが、より複雑なタスクや計算集約型のタスクに関しては、C# のパフォーマンスが明らかに優れています。これは、3D グラフィックス、AI、物理シミュレーション、その他の高性能操作を処理する必要があるゲーム開発に特に当てはまります。
C# のコードの各行を終了するには、必ずセミコロン (;) を追加してください。忘れがちですが、C# ではこれらは厳密に必須です。
ここに、公式ドキュメントへのクイック リンクがあります。 予約キーワードは言語で使用される単語であるため、書き換えるべきではない特定の定義がすでに存在します
次: C# エラーを分析して理解するためのガイド (近日公開予定)
以上がJS の観点から見た C# の概要の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。