C#で静的メソッドとインスタンスメソッドを理解しよう
C#のプログラムでよく登場する「static
」について、「静的メソッド」と「インスタンスメソッド」の違いをわかりやすく解説します。また、静的メソッド同士の関係についても触れます。
目次
1. 静的メソッド (static
メソッド)とは?
- クラスに属するメソッドで、インスタンスを作らなくても呼び出せます。
- インスタンス固有のデータ(フィールドやプロパティ)にはアクセスできません。
- 他の
static
メソッドやstatic
フィールドには自由にアクセスできます。
静的メソッドの例
class MyClass
{
public static void StaticMethod1()
{
Console.WriteLine("これはStaticMethod1です!");
}
public static void StaticMethod2()
{
// 同じクラス内の他の静的メソッドを呼び出せる
StaticMethod1();
Console.WriteLine("これはStaticMethod2です!");
}
}
// 呼び出し例
MyClass.StaticMethod2();
出力:
これはStaticMethod1です!
これはStaticMethod2です!
2. インスタンスメソッドとは?
- 特定のインスタンスに属するメソッドです。
- インスタンス固有のデータ(フィールドやプロパティ)を操作できます。
- インスタンスを作成してから呼び出します。
インスタンスメソッドの例
class MyClass
{
private int instanceValue = 42; // インスタンスごとの値
public void InstanceMethod()
{
Console.WriteLine($"インスタンスの値: {instanceValue}");
}
}
// 呼び出し例
MyClass obj = new MyClass();
obj.InstanceMethod();
出力:
インスタンスの値: 42
3. 静的メソッドから呼べるもの、呼べないもの
呼べるもの
- 他の静的メソッド
- 同じクラス内の静的メソッド同士は自由に呼び出せます。
- インスタンスを必要としないため、安全に動作します。
- 静的フィールドや静的プロパティ
- 静的フィールドもクラス全体に属するため、自由にアクセスできます。
呼べないもの
- インスタンスメソッドやインスタンスフィールド
- インスタンスが存在しないとアクセスできないため、静的メソッドからは直接呼べません。
静的メソッドからのアクセス例
class MyClass
{
private static int staticValue = 100; // 静的フィールド
private int instanceValue = 42; // インスタンスフィールド
public static void StaticMethod1()
{
Console.WriteLine($"静的フィールド: {staticValue}");
}
public static void StaticMethod2()
{
StaticMethod1(); // 他の静的メソッドを呼べる
}
public void InstanceMethod()
{
Console.WriteLine($"インスタンスフィールド: {instanceValue}");
}
public static void StaticMethod3()
{
// インスタンスメソッドは直接呼べない
// InstanceMethod(); // コンパイルエラー
// インスタンスを作れば呼び出せる
MyClass obj = new MyClass();
obj.InstanceMethod();
}
}
4. 静的メソッドを使う場面
静的メソッドは次のような場面で使うのが便利です。
- インスタンスに依存しない処理
- 例: 数学的な計算、日付や文字列の操作。
- クラス全体で共有する処理
- 例: ログ記録、設定の管理。
静的メソッドの活用例
class MathUtils
{
public static int Add(int a, int b)
{
return a + b;
}
public static int Multiply(int a, int b)
{
return a * b;
}
}
// 呼び出し例
int sum = MathUtils.Add(3, 5); // 結果: 8
int product = MathUtils.Multiply(3, 5); // 結果: 15
Console.WriteLine($"合計: {sum}, 積: {product}");
5. まとめ
静的メソッド (static
)
- クラスに属し、インスタンスを必要としない。
- 他の静的メンバー(メソッド、フィールド)には自由にアクセスできる。
- インスタンス固有のデータは直接扱えない。
インスタンスメソッド
- 特定のインスタンスに属し、そのインスタンスのデータを操作できる。
- インスタンスを作成しなければ使えない。
ポイント: 静的メソッド同士は仲間!
- 静的メソッドからは、他の静的メソッドや静的フィールドを自由に使えるというルールを覚えましょう!
ディスカッション
コメント一覧
まだ、コメントがありません