AS3からC#への記事の翻訳、パート1:クラスの基本
この記事は、Unityに切り替えることを決定したがC#プログラミングに完全に慣れていないAS3開発者にとって、C#の基本を理解するのに役立ちます。
主なことから始めましょう:C#ファイルの拡張子は.csであり、AS3ファイルのような.asではありません。 ファイル内には、アプリケーションを構成するクラスの説明があります(AS3ファイルと同様)。 たとえば、ファイルMyClass.cs:
class MyClass { }
C#のクラス名は、AS3のクラス名と同じ規則に従います。クラス名の各単語は大文字で始まる必要があり、残りの名前は小文字で記述されます。 お気づきかもしれませんが、C#のクラスの基本的な構文は、AS3のクラスの構文と同じです。
それでは、変数を追加しましょう。
class MyClass { int X; }
C#の変数の定義はAS3とは異なります。 var x:intの代わりに、int Xを使用する必要があります。命名規則では、変数名は大文字で始まる必要があります。
関数を見てみましょう:
class MyClass { void Foo() { } }
C#の関数は、AS3の関数とも異なります。 C#はキーワード関数を使用せず、戻り値の型は先頭に示されます(AS3のように末尾には示されません)。関数の名前は、命名規則に基づいて大文字で始める必要があります。
入力パラメーターを持つ関数:
class MyClass { void Foo(int x, int y, int z) { } }
AS3の場合と同様に、関数のパラメーターは角かっこ内にありますが、少し異なって記述されています。最初に型、次に名前の間にスペースがあります。 規則では、関数のパラメーター名は小文字で始まる必要があります。
AS3と同様に、関数パラメーターにはデフォルト値を設定できます。
class MyClass { void Foo(int x = 1, int y = 2, int z = 3) { } }
コンストラクター関数:
class MyClass { MyClass() { } }
AS3と同様に、コンストラクター関数の戻り値の型を指定する必要はありません。 実際、AS3で実行できるため、voidデータ型を指定することもできません。 また、このタイプの関数を宣言するために、functionキーワードは使用されません。
複数のコンストラクター関数を持つことができます。これは関数の「オーバーロード」と呼ばれます:
class MyClass { MyClass() { } MyClass(int x) { } MyClass(int x, int y, int z) { } }
再起動は他の機能でも利用できます。
class MyClass { void Foo() { } void Foo(int x) { } void Foo(int x, int y, int z) { } }
コンパイラがどの関数が呼び出されているかを判断するには、2つのルールに従う必要があります。 まず、同じパラメーターを持つ2つの関数を使用することはできません。
class MyClass { void Foo(int x, int y, int z) { // - } void Foo(int x, int y, int z) { // - } }
同じことがそれらの関数にも当てはまります。デフォルトのパラメータのいずれかが指定されていない場合、呼び出しは同じように見える場合があります。
class MyClass { void Foo(int x, int y, int z) { // - } void Foo(int x, int y, int z, int w = 0) { // - } }
第二に、返されるデータのタイプによって関数を「オーバーロード」することはできません。
class MyClass { int Foo(int x, int y, int z) { return 0; } uint Foo(int x, int y, int z) { return 0; } }
これらの2つの単純なルールを順守することで、魂が望むだけの機能を「オーバーロード」できます=)
AS3と同様に、静的関数を定義するには静的キーワードを追加する必要があります。
class MyClass { static void Foo() { } }
静的変数についても同じです:
class MyClass { static int X; }
クラス内でクラス、変数、関数、コンストラクターを定義する方法がわかったので、それらの使用方法を見てみましょう。
void SomeCode() { // - (, ) MyClass mc = new MyClass() // mc = new MyClass(5); // mc.Foo(); // mc.Foo(1, 2, 3); // MyClass.Foo(); // mc.X; // mc.X = 1; // , , AS3... /* ... . */ }
これはすべてAS3に非常に似ています。 ローカル変数mcは、小文字と関数のパラメーターで始まることに注意してください。
アクセス修飾子について説明しましょう。 標準のpublic、private、およびprotected修飾子の構文と動作は、AS3と同じです。 これらを使用するには、関数の戻りデータ型、変数の型、またはキーワードクラスの前にそれらを追加するだけです。
public class MyClass { private int X; protected void Foo() { } }
AS#と同様に、C#には、同じ名前を持ち、動作がわずかに異なる内部アクセス修飾子があります(AS3と比較)。 AS3では、内部修飾子は「現在のクラスおよび現在のパッケージの他のクラスで使用可能」を意味します。 C#では、「現在のクラスおよび現在のアセンブリの他のクラスで使用可能」を意味します。 「アセンブリ」の概念については他の記事で説明しますが、今のところは、1つのバイナリファイルにアセンブルされたクラスのグループと考えてください。
C#にはまた、protectedとinternalの組み合わせであるprotected internal修飾子があります。
結論として、C#およびAS3コードの記述された機能の比較:
| |
これで、一連の記事「C#for AS3 Developers」の最初の部分は終了です。 次の記事では、AS#に類似物が存在しないC#の機能を含む、より複雑なトピックを取り上げます。
連絡を取り合いましょう!