C#は、Microsoftによって開発されたオブジェクト指向プログラミング言語です。以下がC#の主な特徴となります。
1. .NET Frameworkとの連携
C#は.NET Frameworkと密接に統合されており、.NETの豊富なクラスライブラリを活用できます。これにより、ファイル操作、ネットワーク通信、GUIなど様々な機能を容易に実装できます。
// ファイル操作の例
using (StreamWriter sw = new StreamWriter("file.txt"))
{
sw.WriteLine("Hello World!");
}
// ネットワーク通信の例
WebClient client = new WebClient();
string result = client.DownloadString("https://www.example.com");
2. 多様なアプリケーション開発
C#は元々Windowsデスクトップアプリ開発を目的として作られましたが、現在では Web、モバイル、ゲーム、IoTなど幅広い分野のアプリケーション開発に使用されています。
3. オブジェクト指向
C#は完全なオブジェクト指向言語で、カプセル化、継承、ポリモーフィズムといった概念を完備しています。以下がクラスの基本的な例です。
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public void Greet()
{
Console.WriteLine($"Hello, my name is {Name} and I'm {Age} years old.");
}
}
4. 構造化例外処理
C#には try-catch 構文による例外処理機構が組み込まれており、エラー処理を適切に行えます。
try
{
// 処理
}
catch (Exception ex)
{
// 例外処理
}
5. デリゲートとイベント
デリゲートとイベントにより、イベント駆動型のプログラミングが可能です。GUIアプリでのイベント処理に役立ちます。
public class Button
{
public event EventHandler Clicked;
public void Click()
{
Clicked?.Invoke(this, EventArgs.Empty);
}
}
6. 安全性の高い言語仕様
C#には参照型と値型の区別や自動メモリ管理があり、C++に比べてメモリ操作のミスが少なくなります。型安全性も高く、堅牢なコーディングができます。
7. ラムダ式
C#にはラムダ式が導入されており、簡潔に無名メソッドを記述できます。LINQ(統合クエリ)と組み合わせれば、関数型プログラミングの要素も取り入れられます。
list.Where(x => x > 0).Select(x => x * 2);
8. 非同期プログラミング
C# 5.0以降では async/await キーワードが導入され、非同期プログラミングが容易になりました。マルチスレッドよりもシンプルにコーディングできます。
csharp async Task<int> AccessWebAsync() { HttpClient client = new HttpClient(); var response = await client.GetAsync("https://www.example.com"); // 応答の処理 }
C#は専ら Windows 上での.NET アプリケーション開発に使われてきましたが、.NET Coreの登場により、Linux/macOS環境でも開発が可能になりました。近年はゲームエンジン(Unity)やWebサーバー(ASP.NET Core)、クロスプラットフォームモバイルアプリ(Xamarin)などでも利用されるようになり、応用範囲が広がっています。