C# の概要

C# ("C sharp" と発音) は、Microsoft によって開発された最新の汎用プログラミング言語です。デスクトップ、Web、モバイル、ゲーム アプリケーションなど、さまざまな種類のアプリケーションを構築するために広く使用されています。このガイドでは、データ型、変数、制御フロー、関数、クラス、名前空間 など、C# プログラミングの基本について説明します。

さらに、C# は豊富な機能とツールのセットを提供しており、デスクトップ アプリケーション、Web 開発、モバイル アプリケーション、Unity などのテクノロジを使用したゲーム開発など、さまざまな分野で多用途で強力なプログラミング言語となっています。 C# の学習を進めるにつれて、継承、ポリモーフィズム、インターフェイス、ジェネリック、LINQ (言語統合クエリ)、タスクや async/await を使用した非同期プログラミングなど、より高度なトピックを探索できます。 これらの概念を理解すると、堅牢でスケーラブルなアプリケーションを設計する能力が向上します。

基本から始めましょう。

開発環境のセットアップ

C# でコーディングを始めるには、開発環境をセットアップする必要があります。開始する手順は次のとおりです。

  • Visual Studio をインストールする: Microsoft の公式 Web サイトから Visual Studio をダウンロードしてインストールします。Visual Studio は、C# 開発に必要なすべてのツールを提供する強力な統合開発環境 (IDE) です。
  • 新しいプロジェクトの作成: Visual Studio を起動し、新しいプロジェクトを作成します。構築するアプリケーションの種類に基づいて、適切なプロジェクト テンプレートを選択します。
  • コードの作成: プロジェクトが設定されたら、Visual Studio が提供するコード エディターで C# コードの作成を開始できます。

開発環境のセットアップが完了したので、C# プログラミングの基本を見ていきましょう。

ハローワールドプログラム

伝統的な「Hello, World!」Program は、多くの場合、プログラミング言語で最初に作成するプログラムです。C# で記述する方法は次のとおりです。

using System;

class Program
{
    static void Main()
    {
        Console.WriteLine("Hello, World!");
    }
}

このコード例では、まず、入出力を処理するための 'Console' という名前のクラスを含む 'System' 名前空間を組み込みます。次に、'Program' という名前のクラスを定義します。このクラス内には、C# プログラムのエントリ ポイントである 'Main' メソッドがあります。最後に、'Console.WriteLine' メソッドを使用して、「Hello, World!」を出力します。コンソールへのメッセージ。

変数とデータ型

C# では、variables を使用する前に宣言する必要があります。変数には、さまざまなデータ型の値が保持されます。C# で一般的に使用されるデータ型をいくつか示します。

  • 'int': 整数を表します (例: 10、-5、0)。
  • 'double': 小数点以下の桁を含む浮動小数点数を表します (例: 3.14、-0.5)。
  • 'bool': ブール値 (true または false) を表します。
  • 'string': 一連の文字を表します (例: "Hello"、"C#")。

変数宣言と基本的な操作を示す例を次に示します。

int age = 25;
double pi = 3.14;
bool isStudent = true;
string name = "John";

int sum = age + 5;
double circleArea = pi * 2 * 2;
bool isAdult = age >= 18;

Console.WriteLine("Name: " + name);
Console.WriteLine("Age: " + age);
Console.WriteLine("Sum: " + sum);
Console.WriteLine("Circle Area: " + circleArea);
Console.WriteLine("Is Adult? " + isAdult);

この例では、変数 'age''pi''isStudent''name' をそれぞれ宣言します。データ型。加算、乗算、比較などの基本的な演算を実行します。'Console.WriteLine' メソッドは、コンソールに値を表示するために使用されます。

配列とコレクション

配列とコレクションは、複数の値を効率的に格納および操作できるようにする C# の基本的なデータ構造です。これらはさまざまなプログラミング シナリオで重要な役割を果たし、C# 開発で広く使用されています。

配列

C# の配列は、同じ型の要素の固定サイズのコレクションです。以下に例を示します。

int[] numbers = new int[5] { 1, 2, 3, 4, 5 };

この例では、'numbers' という名前の、'5' のサイズの整数配列を宣言します。中括弧 '{}' を使用して、指定された値で配列を初期化します。0 から始まるインデックス表記を使用して、配列の個々の要素にアクセスできます。たとえば、'numbers[0]' と指定すると、最初の要素が得られます。

コレクション

C# のコレクションは動的に拡大または縮小できるため、配列よりも柔軟性が高くなります。C# では、'List<T>'、'Dictionary<TKey, TValue>'、'HashSet<T>' などのさまざまなコレクション型が提供されています。

'System.Collections.Generic' 名前空間内のクラスの 1 つを使用して、ジェネリック コレクションを作成できます。ジェネリック コレクションは、コレクション内のすべての項目が同じデータ型を持つ場合に便利です。ジェネリック コレクションでは、必要なデータ型のみを追加できるようにすることで、強力な型指定を強制します。

using System.Collections.Generic;

'List<T>' コレクションを使用した例を次に示します。

List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");
names.Add("Charlie");

この例では、初期化クラス 'List<T>' を使用して、'names' という名前の文字列のリストを作成します。'Add()' メソッドを使用してリストに要素を追加します。

'List<T>' は、要素数を取得する 'Count' や削除する 'Remove()' など、コレクションを操作するための便利なメソッドとプロパティを多数提供します。要素、および 'Contains()' を使用して要素が存在するかどうかを確認します。

配列とコレクションの反復

'for' や 'foreach' などのループを使用して配列やコレクションを反復処理し、それらの要素にアクセスして操作できます。配列とリストを反復処理する例を次に示します。

int[] numbers = new int[] { 1, 2, 3, 4, 5 };

foreach (int number in numbers)
{
    Console.WriteLine(number);
}

List<string> names = new List<string>() { "Alice", "Bob", "Charlie" };

foreach (string name in names)
{
    Console.WriteLine(name);
}

この例では、'foreach' ループを使用して、配列 'numbers' とリスト 'names' の各要素を反復処理し、それらを出力します。コンソール。

制御フロー

制御フローを使用すると、条件に基づいて意思決定を行い、さまざまなコード ブロックを実行できます。C# には、'if' ステートメント、'switch' ステートメント、ループなど、いくつかの制御フロー構造が用意されています。

'If'

'if' ステートメントを使用すると、指定された条件が true の場合にのみコード ブロックを実行できます。以下に例を示します。

int number = 10;

if (number > 0)
{
    Console.WriteLine("The number is positive.");
}
else if (number < 0)
{
    Console.WriteLine("The number is negative.");
}
else
{
    Console.WriteLine("The number is zero.");
}

この例では、'if'、'else if'、および 'else' 句を使用して、'number' 変数の値をチェックします。状況に応じて、適切なメッセージが出力されます。

'Switch'

'switch' ステートメントを使用すると、式の値に基づいて実行する多くのコード ブロックの 1 つを選択できます。以下に例を示します。

int dayOfWeek = 2;
string dayName;

switch (dayOfWeek)
{
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    // ...
    default:
        dayName = "Invalid day";
        break;
}

Console.WriteLine("Today is " + dayName + ".");

この例では、ステートメント 'switch' を使用して、'dayOfWeek' の値に基づいて曜日の名前を割り当てます。'case' ステートメントは可能な値を指定し、どのケースも一致しない場合は 'default' ケースが実行されます。

ループステートメント

ループを使用すると、特定の条件が満たされるまでコードのブロックを繰り返し実行できます。C# では、'for'、'while'、および 'do-while' ループが提供されます。

'For'

'for' ループは、反復回数が事前にわかっている場合に使用されます。以下に例を示します。

for (int i = 0; i < 5; i++)
{
    Console.WriteLine("Iteration: " + i);
}

この例では、ループが 5 回実行され、毎回反復番号が出力されます。

'While'

'while' ループは、反復回数が事前にわからないが、確認する条件がある場合に使用されます。以下に例を示します。

int count = 0;

while (count < 5)
{
    Console.WriteLine("Count: " + count);
    count++;
}

この例では、'count' 変数が 5 に達するまでループが実行されます。

'Do-While'

'do-while' ループは while ループに似ていますが、最後に条件がチェックされるため、ループは少なくとも 1 回実行されます。以下に例を示します。

int num = 1;

do
{
    Console.WriteLine("Number: " + num);
    num++;
} while (num <= 5);

この例では、'num' 変数が 5 以下でなくなるまでループが実行されます。

機能

関数 を使用すると、再利用可能なコード ブロックをカプセル化できます。C# では、値を返さないメソッドに対して 'void' キーワードを使用した関数の定義、および値を返すメソッドに対して他のデータ型を使用する関数の定義がサポートされています。以下に例を示します。

int Add(int a, int b)
{
    return a + b;
}

void Greet(string name)
{
    Console.WriteLine("Hello, " + name + "!");
}

int result = Add(5, 3);
Greet("Alice");

この例では、'Add''Greet' の 2 つの関数を定義します。'Add' 関数は 2 つの整数パラメータを受け取り、それらの合計を返します。'Greet' 関数は文字列パラメータを受け取り、挨拶メッセージを出力します。次に、適切な引数を指定してこれらの関数を呼び出します。

クラスとオブジェクト

C# はオブジェクト指向プログラミング言語です。つまり、classes とオブジェクトの作成をサポートしています。クラスは、それらのクラスのインスタンスであるオブジェクトを作成するための設計図を定義します。以下に例を示します。

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void SayHello()
    {
        Console.WriteLine("Hello, my name is " + Name + " and I'm " + Age + " years old.");
    }
}

Person person = new Person();
person.Name = "John";
person.Age = 30;
person.SayHello();

この例では、'Name' プロパティと 'Age' プロパティ、および 'SayHello' メソッドを含む 'Person' クラスを定義します。 。次に、'new' キーワードを使用して 'Person' クラスのインスタンスを作成し、そのプロパティを設定します。最後に、'person' オブジェクトに対して 'SayHello' メソッドを呼び出します。

オブジェクト指向プログラミング (OOP) の概念

C# はオブジェクト指向プログラミング言語であり、継承、カプセル化、ポリモーフィズムなどの OOP 概念をサポートするさまざまな機能を提供します。

継承

継承を使用すると、既存のクラスに基づいて新しいクラスを作成し、その属性と動作を継承できます。以下に例を示します。

class Shape
{
    public virtual void Draw()
    {
        Console.WriteLine("Drawing a shape.");
    }
}

class Circle : Shape
{
    public override void Draw()
    {
        Console.WriteLine("Drawing a circle.");
    }
}

この例では、'Circle' クラスは、':' シンボルを使用して 'Shape' クラスを継承します。'Circle' クラスは、基本クラスの 'Draw' メソッドをオーバーライドして、独自の実装を提供します。

カプセル化

カプセル化とは、データとメソッドをクラス内にバンドルし、それらのアクセスを制御する方法です。アクセス修飾子 ('public'、'private'、'protected' など) を使用して、メンバーの可視性を指定できます。以下に例を示します。

class Person
{
    private string name;

    public string GetName()
    {
        return name;
    }

    public void SetName(string newName)
    {
        name = newName;
    }
}

この例では、'name' フィールドは 'Person' クラス内にカプセル化されており、'GetName' および * を通じてのみアクセスできます。 h81* メソッド。

ポリモーフィズム

ポリモーフィズムにより、異なるクラスのオブジェクトを共通の基本クラスのオブジェクトとして扱うことができます。これにより、さまざまな種類のオブジェクトを均一な方法で処理するコードを作成できます。以下に例を示します。

class Animal
{
    public virtual void MakeSound()
    {
        Console.WriteLine("Animal makes a sound.");
    }
}

class Dog : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Dog barks.");
    }
}

class Cat : Animal
{
    public override void MakeSound()
    {
        Console.WriteLine("Cat meows.");
    }
}

この例では、'Animal' クラスには仮想 'MakeSound' メソッドがあり、これは 'Dog' および 'Cat' によってオーバーライドされます。 クラス。ポリモーフィズムにより、'Dog' および 'Cat' のインスタンスを 'Animal' のインスタンスとして扱い、'MakeSound' を呼び出すことができます。それらに関するメソッド。

例外処理

例外処理 を使用すると、実行時エラーを適切に処理できます。C# では、'try-catch' ブロックを使用して例外をキャッチして処理できます。以下に例を示します。

try
{
    int result = 10 / 0;
    Console.WriteLine("Result: " + result);
}
catch (DivideByZeroException ex)
{
    Console.WriteLine("Divide by zero error: " + ex.Message);
}
finally
{
    Console.WriteLine("Cleanup code goes here.");
}

この例では、ゼロによる除算を実行しようとします。これにより、'DivideByZeroException' がスローされます。'try' ブロック内のコードが実行され、例外が発生した場合は 'catch' ブロックでキャッチされます。

'finally' ブロックは、例外が発生したかどうかに関係なく実行され、通常はクリーンアップ操作に使用されます。

例外処理はプログラムのクラッシュを防止し、制御されたエラー処理と回復を可能にします。

結論

この包括的なガイドでは、C# プログラミングの詳細な紹介が提供され、言語の基礎と重要な概念がカバーされています。 開発環境のセットアップと「Hello, World!」の作成から始まります。プログラムでは、データ型、変数、if ステートメントやループなどの制御フロー構造、および関数の作成について調査しました。 クラス、オブジェクト、継承、カプセル化、ポリモーフィズム、例外処理など、より高度なトピックを掘り下げました。 さらに、複数の値を管理するための配列とコレクションの使用法についても説明しました。 この知識があれば、C# プログラミングの強固な基礎が得られ、コンソール アプリケーションから Web アプリケーションやモバイル アプリケーションまで、幅広いアプリケーションを開発できるようになります。 スキルを向上させ、無限の可能性を解き放つために、練習と広大な C# エコシステムの探索を継続することを忘れないでください。