AS#開発者向けのC#。 パート1:クラスの基本

画像



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# // //////// ///////////////// // Declaration // ///////////////// // Class public class MyClass { // Field variable public int X; // Class variable static public int Y; // Default constructor public MyClass() { } // Overloaded constructor public MyClass(int x) { } // Instance function public void Foo() { } // Overloaded instance function public void Foo(int x) { } // Class function static public void Goo() { } // Overloaded class function static public void Goo(int x) { } } /////////// // Usage // /////////// // Call the default constructor MyClass mc = new MyClass() // Call a different constructor mc = new MyClass(5); // Call an instance function mc.Foo(); // Call an overloaded instance function mc.Foo(1); // Call a static function MyClass.Goo(); // Call an overloaded static function MyClass.Goo(1); // Get an instance variable mc.X; // Set an instance variable mc.X = 1; // Get a class variable MyClass.Y; // Set a class variable MyClass.Y = 1; // Single-line comment /* Multi-line comment */
      
      



 ///////// // AS3 // ///////// ///////////////// // Declaration // ///////////////// // Class public class MyClass { // Field variable public var x:int; // Class variable static public var y:int; // Default constructor public function MyClass() { } // Overloaded constructor // {not supported} // Instance function public function foo(): void { } // Overloaded instance function // {not supported} // Class function static public function goo(): void { } // Overloaded class function // {not supported} } /////////// // Usage // /////////// // Call the default constructor var mc:MyClass = new MyClass() // Call a different constructor mc = new MyClass(5); // Call an instance function mc.foo(); // Call an overloaded instance function // {not supported} // Call a static function MyClass.goo(); // Call an overloaded static function // {not supported} // Get an instance variable mc.x; // Set an instance variable mc.x = 1; // Get a class variable MyClass.y; // Set a class variable MyClass.y = 1; // Single-line comment /* Multi-line comment */
      
      





これで、一連の記事「C#for AS3 Developers」の最初の部分は終了です。 次の記事では、AS#に類似物が存在しないC#の機能を含む、より複雑なトピックを取り上げます。



連絡を取り合いましょう!



All Articles