C# は、マイクロソフトが開発したプログラミング言語で、.NET というランタイムの上で動きます。 業務システム、Web API、Windows アプリ、そして Unity によるゲーム開発で広く使われています。
「C#はWindows専用」はもう古い
いちばん多い誤解がこれです。現在の .NET はLinux でも macOS でも動き、Docker コンテナ上で動かす構成も一般的です。AWS や Azure 上の Linux サーバーで C# の API が動いているのは珍しくありません。
この誤解が根強いのは、かつての .NET Framework が Windows 専用だった時代の情報が残っているためです。C# の情報を読むときは、それが .NET Framework の話か、現在の .NET の話かを最初に見分けてください。
Java との違いはどこか
C# と Java は、どちらも仮想マシン上で動く静的型付けのオブジェクト指向言語で、文法もよく似ています。実務での違いは次のあたりです。
| C# | Java | |
|---|---|---|
| 非同期の書き方 | async / await が言語機能 |
標準機能で書き方が分かれる |
| コレクション操作 | LINQ で問い合わせのように書ける | ストリームAPIで書く |
| 主戦場 | 業務システム、Unity、Windows | 大規模企業システム、Android |
async / await はもともと C# が広めた書き方で、後に JavaScript や Python など多くの言語へ広がりました。
Unity 経由で入ってくる人が多い
ゲームエンジン Unity のスクリプト言語が C# であるため、ゲーム開発から入って C# を覚えるという流れが一定数あります。ただし Unity の中で書く C# は独自のライフサイクル(Start / Update など)に強く依存するので、そのまま Web API の開発に移れるわけではない点は理解しておいてください。