C# しーしゃーぷ
.NETオブジェクト指向MicrosoftVisual StudioTypeSafeLINQ
C#について教えて
C#とは
C#(シーシャープ)は、Microsoftが2000年に発表したオブジェクト指向プログラミング言語です。Javaに強く影響を受けつつ、C・C++の表現力も取り込んで設計されており、現在はクロスプラットフォーム対応の.NET(ドットネット)ランタイム上で動作します。Windowsアプリ・Webアプリ・業務システム・ゲーム開発など幅広い用途で使われる、エンタープライズ(企業向け)開発の定番言語の一つです。
型安全性(変数の型を厳密に管理する仕組み)が高く、大規模なチーム開発でも品質を保ちやすいのが特徴です。また、Visual Studio(ビジュアルスタジオ)という強力な統合開発環境(IDE)と組み合わせることで、コードの自動補完やデバッグ(バグ探し)が非常にやりやすく、開発生産性が高い言語として企業システム開発で広く採用されています。
2020年代には、オープンソース化された.NET 5/6/7/8の登場により、WindowsだけでなくLinux・macOS上でも動作するようになりました。クラウドサービス(Azure)との親和性も高く、モダンな開発においても存在感を増しています。
C#の主な特徴・構造
| 特徴 | 内容 |
|---|---|
| オブジェクト指向 | クラス・継承・ポリモーフィズムなど、OOP(オブジェクト指向プログラミング)を完全サポート |
| 型安全性 | 変数の型が厳密に管理され、実行前にバグを発見しやすい |
| LINQ | データベースのSQL風クエリをコード内に直接書ける機能(Language-Integrated Query) |
| 非同期処理 | async/await 構文で、重い処理を待ちながら他の作業もできる書き方が簡単に実現できる |
| ガベージコレクション | 使い終わったメモリを自動的に回収する仕組みで、メモリ管理の手間が減る |
| クロスプラットフォーム | .NET 5以降、Windows・Linux・macOS で動作可能 |
覚え方:「C#」の「#」は”ドを4個重ねた形”
楽譜の「シャープ(♯)」記号に由来していて、「C言語を一段階上げた(シャープにした)言語」というニュアンスが込められています。「C++のさらに上」と覚えておくと、位置付けがイメージしやすいです。
C#で作れるもの・主な用途
| 用途 | 代表例 |
|---|---|
| Windowsデスクトップアプリ | 社内業務ツール、管理画面など |
| Webアプリ・API | ASP.NET Core を使ったWebサービス |
| ゲーム開発 | Unity(世界シェアNo.1のゲームエンジン)の公式言語 |
| クラウドサービス | Azure Functionsなど、サーバーレス処理 |
| モバイルアプリ | .NET MAUIによるiOS/Androidアプリ |
歴史と背景
- 1999年 — Microsoftのアンダース・ヘルスバーグ(Turbo Pascal・Delphiの設計者)が開発を開始
- 2000年 — PDC(Professional Developers Conference)でC# 1.0と.NET Frameworkを発表
- 2002年 — Visual Studio .NET 2002とともに正式リリース。Javaに対抗する企業向け言語として登場
- 2005年 — C# 2.0でジェネリクス(汎用的な型定義)を導入。実用性が大幅向上
- 2007年 — C# 3.0でLINQを導入。データ処理の記述が革新的に簡潔になる
- 2012年 — C# 5.0で
async/awaitを導入。非同期処理の書き方がシンプルに - 2016年 — .NETをオープンソース化、Linux・macOS対応の「.NET Core」登場
- 2020年 — .NET 5で「.NET Framework」と「.NET Core」を統合。クロスプラットフォームが標準に
- 2024年 — C# 13・.NET 9がリリース。継続的にモダンな言語機能を追加中
他の言語との比較
C#は同じ「オブジェクト指向・静的型付け」ファミリーのJavaやC++と比較されることが多いです。発注・選定する立場では、どの言語が使われているかよりも「何が作れるか・誰が書けるか」が重要です。
| 比較項目 | C# | Java | Python |
|---|---|---|---|
| 主な用途 | Windowsアプリ・ゲーム・業務系Web | 業務系Web・Androidアプリ | AI/データ分析・スクリプト |
| 型の扱い | 静的型付け(厳密) | 静的型付け(厳密) | 動的型付け(柔軟) |
| 学習コスト | 中程度 | 中程度 | 低め |
| 実行速度 | 速い | 速い | やや遅い |
| Microsoftとの相性 | ◎ 最高 | ○ 良い | ○ 良い |
| ゲーム開発 | ◎(Unity) | △ | △ |
| エンジニアの採用難易度 | やや難 | 標準 | 比較的易 |
関連する規格・RFC
| 規格番号 | 内容 |
|---|---|
| ECMA-334 | C# 言語仕様の国際標準(ECMA International策定) |
| ISO/IEC 23270 | C# 言語仕様のISO規格(ECMA-334と対応) |
関連用語
- ./060-dotnet.md — C#が動作するMicrosoftのアプリケーション実行基盤(ランタイム)
- ./061-visual-studio.md — C#開発に使われるMicrosoftの統合開発環境(IDE)
- ./062-object-oriented.md — C#が採用している設計思想「オブジェクト指向プログラミング」
- ./063-java.md — C#と設計思想・用途が近い代表的なプログラミング言語
- ./064-unity.md — C#を公式スクリプト言語として採用する世界的ゲームエンジン
- ./066-static-typing.md — C#が採用する「変数の型を実行前に決める」型システムの仕組み
- ./067-azure.md — C#・.NETと高い親和性を持つMicrosoftのクラウドサービス
- ./068-asp-net.md — C#でWebアプリ・APIを開発するためのフレームワーク