カテゴリ: C# 更新日: 2025/06/29

C#の動的型付け(dynamic型)とは?柔軟な変数型を理解しよう

C#の動的型付け(dynamic型)とは?柔軟な変数型を理解しよう
C#の動的型付け(dynamic型)とは?柔軟な変数型を理解しよう

先生と生徒の会話形式で理解しよう

生徒

「C#の変数って、使う前に型を決めなきゃいけないんですよね?」

先生

「基本的にはそうですが、C#には少し特別な型があります。それがdynamic型です。」

生徒

dynamic型ってなんですか?なんだか難しそう……」

先生

「大丈夫、簡単な例で説明していきますよ!dynamic型を使うと、変数の型を事前に決めずに柔軟に使うことができるんです。」

1. C#のdynamic型とは?

1. C#のdynamic型とは?
1. C#のdynamic型とは?

C#のdynamic(ダイナミック)型は、変数の型を実行時に決めることができる特別な型です。通常、C#では変数の型(たとえばintやstringなど)をあらかじめ明示的に指定しなければなりませんが、dynamic型を使うと何でも入る「箱」のように扱えます。

動的型付けとは、プログラムを実行するタイミングで、変数の中身の型が決まることを意味します。これにより、より柔軟なコードを書くことができる一方で、注意しないと実行時エラーにつながることもあります。

2. dynamic型の基本的な使い方

2. dynamic型の基本的な使い方
2. dynamic型の基本的な使い方

まずはdynamic型の基本的な使い方を見てみましょう。


using System;

class Program
{
    static void Main()
    {
        dynamic value = 10;
        Console.WriteLine(value);

        value = "こんにちは";
        Console.WriteLine(value);

        value = true;
        Console.WriteLine(value);
    }
}

この例では、valueという1つの変数に、整数(int)、文字列(string)、論理値(bool)を順番に代入しています。型を明示しなくても、C#が実行時に自動で型を判断してくれます。

出力結果は以下の通りです。


10
こんにちは
True

3. dynamic型とvar型の違い

3. dynamic型とvar型の違い
3. dynamic型とvar型の違い

dynamic型と混同しやすいのがvar型です。どちらも一見似ていますが、決定されるタイミングが違うのがポイントです。

  • var型:コンパイル時(プログラムを書く段階)に型が決まる
  • dynamic型:実行時(プログラムを動かす段階)に型が決まる

例を見て比較してみましょう。


var text = "Hello"; // textはstring型として決まる
text = 100; // コンパイルエラー

dynamic text = "Hello"; // 実行時に型が決まる
text = 100; // 問題なし(実行時にint型として扱われる)

4. dynamic型の注意点

4. dynamic型の注意点
4. dynamic型の注意点

dynamic型はとても柔軟ですが、使いすぎると実行時エラーが起こりやすくなります。

たとえば、次のようなコードはどうなるでしょうか?


dynamic number = 10;
Console.WriteLine(number.Length); // エラー!

numberは整数(int型)なので、Lengthというプロパティは存在しません。そのため、実行時にエラーになります。コンパイル時に間違いを検出できないため、バグに気付きにくくなるのです。

5. dynamic型が活躍する場面

5. dynamic型が活躍する場面
5. dynamic型が活躍する場面

dynamic型は、型が事前にわからないような場面で便利です。たとえば以下のようなケースです。

  • 外部のデータ(JSONやXML)を処理するとき
  • リフレクション(プログラム内部の情報を動的に操作)を使うとき
  • COMオブジェクトやスクリプトとの連携

初心者のうちは多用する必要はありませんが、「そういう特殊な場面で使う型なんだな」と覚えておくと良いでしょう。

6. dynamic型を使った簡単な関数の例

6. dynamic型を使った簡単な関数の例
6. dynamic型を使った簡単な関数の例

次に、dynamic型を使って関数(メソッド)にさまざまな型の引数を渡す例を見てみましょう。


using System;

class Program
{
    static void Main()
    {
        ShowValue(123);
        ShowValue("テスト");
        ShowValue(3.14);
    }

    static void ShowValue(dynamic value)
    {
        Console.WriteLine("値は:" + value);
    }
}

この例では、整数・文字列・小数など、どんな型でもShowValueメソッドに渡すことができます。これがdynamic型の最大の強みです。


値は:123
値は:テスト
値は:3.14

7. 初心者が覚えておくべきポイント

7. 初心者が覚えておくべきポイント
7. 初心者が覚えておくべきポイント

最後に、プログラミング未経験の方がdynamic型について覚えておきたいポイントをまとめます。

  • dynamic型は、型を自由に変えられる特別な型です。
  • 実行時に型が決まるため、柔軟に使えます。
  • 使いすぎは注意。間違った使い方でもコンパイルできてしまうので、実行時にエラーになる可能性があります。
  • 特別な場面で活躍する型ですが、通常の開発ではintstringなどの静的な型を使うのが基本です。

このように、dynamic型はC#の中でも少し特別な存在です。初心者のうちは「型が決まっていない箱のようなもの」とイメージしておくと理解しやすいでしょう。

カテゴリの一覧へ
新着記事
COBOLの変数名の付け方を解説!初心者でもわかる命名規則とコツ
C#のbreakとcontinueの使い方!ループ制御の基本テクニック
COBOLのFILLERの使い方とは?未使用領域を上手に管理する基本テクニック
C#のforeach文の基本!配列やコレクションを簡単に繰り返し処理する方法
人気記事
No.1
Java&Spring記事人気No1
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
No.2
Java&Spring記事人気No2
C#のwhile文の使い方!条件付きループを基礎から学ぼう
No.3
Java&Spring記事人気No3
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.4
Java&Spring記事人気No4
C#のfor文の基本!繰り返し処理をわかりやすく解説