C#: 基本的な構文

1. プログラムの構成

典型的な C# プログラムは、using ディレクティブ、namespaceclass、および Main メソッドで構成されています。

▶ サンプル

CSHARP
using System;

namespace MyApp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello, World!");
        }
    }
}
▶ 試してみよう
TEXT 📖 参照専用
Hello, World!

2. 文とセミコロン

C# では、すべての文の末尾にセミコロン ; を付ける必要があります。セミコロンは文の終端記号であり、コンパイラに対してその文がどこで終わるかを示します。セミコロンが欠けていると、コンパイルエラーが発生します。

▶ サンプル

CSHARP
using System;

namespace StatementDemo
{
    class Program
    {
        static void Main()
        {
            int x = 10;
            int y = 20;
            int sum = x + y;
            Console.WriteLine(sum);
        }
    }
}
▶ 試してみよう
TEXT 📖 参照専用
30

3. コードブロックと中括弧

コードブロックは中括弧 { } で囲まれ、複数の文を単一の論理単位としてまとめる。名前空間、クラス、メソッド、条件分岐、ループはすべてコードブロックを必要とする。中括弧はネストすることができる。

CSHARP
namespace Outer
{
    namespace Inner
    {
        class MyClass
        {
            void MyMethod()
            {
                if (true)
                {
                    Console.WriteLine("nested block");
                }
            }
        }
    }
}

4. インデントとコードスタイル

適切なインデントは、コードの可読性を高めます。C#コミュニティでは、インデントに4スペースを使用することを推奨しています。波括弧の書き方には、主に2つのスタイルがあります:

CSHARP
class StyleA
{
    void Method()
    {
        Console.WriteLine("Allman style");
    }
}

class StyleB {
    void Method() {
        Console.WriteLine("K&R style");
    }
}

ヒント:Visual Studio では、デフォルトでオールマン・スタイルが採用されています。最も重要なのは、プロジェクト内での一貫性です。


5. コンソール出力

Console.Write および Console.WriteLine は、コンソールにテキストを出力するために使用されます:

▶ サンプル

CSHARP
using System;

namespace ConsoleDemo
{
    class Program
    {
        static void Main()
        {
            Console.Write("Hello");
            Console.Write(" ");
            Console.WriteLine("World");
            Console.WriteLine("Second line");
        }
    }
}
▶ 試してみよう
TEXT 📖 参照専用
Hello World
Second line

6. エスケープ文字

文字列内の特定の文字は、正しく表示されるように、バックスラッシュ \ でエスケープする必要があります:

エスケープシーケンス 意味
\n 改行
\t タブ
\\ バックスラッシュ
\" ダブルクォート
\' 単一引用符

▶ サンプル

CSHARP
using System;

namespace EscapeDemo
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("Line1\nLine2");
            Console.WriteLine("Name\tAge");
            Console.WriteLine("Path: C:\\Users\\Doc");
            Console.WriteLine("He said \"Hello\"");
        }
    }
}
▶ 試してみよう
TEXT 📖 参照専用
Line1
Line2
Name	Age
Path: C:\Users\Doc
He said "Hello"

警告:文字列に多くのバックスラッシュが含まれている場合(ファイルパスなど)、リテラル文字列 @"..." を使用してください。これにより、\ のエスケープ処理が不要になります。


7. コメント

コメントは開発者向けの注記であり、コンパイラによって無視されます。C# では、次の 3 種類のコメントがサポートされています。

CSHARP
using System;

namespace CommentDemo
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("hello");

            Console.WriteLine("world");

            /*
            Console.WriteLine("skipped");
            Console.WriteLine("also skipped");
            */

            Console.WriteLine("end");
        }

        /// <summary>
        /// Calculate the sum of two numbers
        /// </summary>
        static int Add(int a, int b)
        {
            return a + b;
        }
    }
}
TEXT 📖 参照専用
hello
world
end

ヒント: XMLドキュメントコメント(///)は、公開APIでよく使用されます。Visual Studioでは、メソッドが呼び出された際にこれらの説明が表示されます。


8. トップレベルの文

C# 9 以降では、トップレベル文 を使用することで、定型的な namespaceclassMain といったコードを省略し、ファイルの最上位レベルで直接ロジックを記述できるようになりました。コンパイラが自動的にエントリメソッドを生成します。

▶ サンプル

CSHARP
using System;

Console.WriteLine("Top-level statement!");
int result = 40 + 2;
Console.WriteLine($"The answer is {result}");
▶ 試してみよう
TEXT 📖 参照専用
Top-level statement!
The answer is 42

ヒント:トップレベル文は、1つのプロジェクトにつき1つのファイルでのみ使用できます。複数のファイルで使用すると、コンパイルエラーが発生します。


9. ファイルスコープのネームスペース

C# 10 以降では、ファイルスコープのネームスペースにより、従来のブロック形式のネームスペースの代わりに namespace MyApp; を使用できるようになり、ネストが 1 レベル減ります:

CSHARP
namespace MyApp;

class Program
{
    static void Main()
    {
        Console.WriteLine("File-scoped namespace");
    }
}

これは、次の式と同等です:

CSHARP
namespace MyApp
{
    class Program
    {
        static void Main()
        {
            Console.WriteLine("File-scoped namespace");
        }
    }
}

ヒント:ファイルスコープのネームスペースを使用するとコードがより簡潔になるため、新しいプロジェクトではこの方式の使用をお勧めします。

❓ よくある質問

Q セミコロンを書き忘れたらどうなりますか?
A コンパイラはセミコロンが欠落していることを示すエラーを報告し、エラーの位置は次の行を指す場合があります。
Q ディレクティブは名前空間内に記述できますか?
A はい、できますが、スコープを明確にするため、通常はファイルの先頭に記述します。
Q トップレベル文を使用するプロジェクト内でクラスを定義することはできますか?
A はい、クラス定義をトップレベル文の後に配置すれば問題ありません。
Q ファイルスコープのネームスペース内で複数のネームスペースを定義することはできますか?
A いいえ、各ファイルにはファイルスコープのネームスペースを1つしか定義できません。

📖 まとめ

📝 練習問題

  1. Console.Write および Console.WriteLine を使用して、自分の名前と年齢を出力するコンソールプログラムを作成してください
  2. エスケープ文字を使用して、1つの Console.WriteLine ステートメントで3行のテキストを出力する
  3. トップレベル文を用いて、古典的なプログラム構造を書き直す
  4. メソッドにXMLドキュメントコメントを追加し、<summary>および<param>タグを含める
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%