ブロックとは
C#をコーディングするエリアは中確固{}で囲みながら書いていくのが基本になります。いくつかのブロックに分かれているので見ていきましょう。
名前空間
まずは名前空間のブロックが一番外側にあります。
using System.Text; namespace Demo { public class CodeA { public void Create() { StringBuilder sb = new StringBuilder(); } } }
この例だと「namespace Demo」から始まる一番外側の{}です。名前空間は名前の衝突(重複)を防ぐためにフォルダー分けのような感覚で命名していきます。
次にクラスブロックがあります。「public class CodeA」で始まる{}です。この中にクラスの機能をコーディングしていきます。
最後のブロックがメソッドといわれるものになります。「public void Create()」で始まるブロックです。C#では基本的にはこのメソッドといわれるブロックの中に処理を書いていきます。
クラス
クラスブロックの中は,そのクラスで使う変数等を宣言できる
クラスブロックの中にはメソッド以外にも色々なことを書くことができます。
例えば変数というものを宣言することができ,クラスブロックで宣言したものは,そのクラスのどこからでも参照できるようになります。
public class CodeA { private StringBuilder sb2 = new StringBuilder(); public void Create() { StringBuilder sb = new StringBuilder(); } public void Create2() { sb2.Append("XXX"); } }
この例で行くとCreateメソッドの中の「sb」はCreateメソッドの中でしか参照することができませんが,クラスブロックで宣言している「sb2」はCreateメソッドからも,Create2メソッドからも参照することができます。
メソッドの中で使い終わるものはメソッドの中で宣言し,クラスの中の複数のメソッドで使用される値はクラスブロックに宣言するというのが基本的な考え方です。
メソッド
メソッドには値を返すものと,値を返さないものがあります。
値を返さない場合はvoid
値を返さない場合は「void」というキーワードを使います。
public void Create() { StringBuilder sb = new StringBuilder(); }
この場合,Createメソッドは処理をした後,何も値を返さないことを示しています。
値を返す場合は型
値を返す場合は,返却する値の型を記述します。
public string Create() { return "XXXXX"; }
この場合は「string」を返却するCreateメソッドになります。「return」キーワードに書かれたXXXXXという文字が返却されることになります。「string」というのは文字列の型になります。メソッドに型を指定した場合,returnキーワードを使って指定した型の値を返却しないとコンパイルエラーになります。
基本的にはすべて{}で囲む
このように,基本的には中カッコ{}の中に,プログラムコードをどんどん書いていくことになります。
冒頭にusingを書くことで名前空間を省略できる
using System.Text; namespace Demo { public class CodeA { public void Create() { StringBuilder sb = new StringBuilder(); } } }
冒頭に書かれている「using System.Text;」はusingキーワードを使って,そのクラスで使用する名前空間を記述しています。これがあると,名前空間の記述を省略できます。
usingキーワードがない場合は,名前空間をフルネームで記述しないとコンパイルエラーになります。
namespace Demo { public class CodeA { private System.Text.StringBuilder sb2 = new System.Text.StringBuilder(); public void Create() { System.Text.StringBuilder sb = new System.Text.StringBuilder(); } public void Create2() { sb2.Append("XXX"); } } }
このように「StringBuilder」というクラスは「System.Text」という名前空間なのですが,冒頭のusingキーワードがない場合はすべての「StringBuilder」に「System.Text」を記述しないといけなくなり,大変ですし,可読性も落ちます。