初心者にも分かりやすくC#(シーシャープ)の特徴と書き方を解説!

この記事のランク
読む時間3分
重要度

C#(シーシャープ)はMicrosoft社が2002年に開発したプログラミング言語のひとつで、主にWindows向けのアプリケーションやWebサービス、またゲーム開発に使われている言語です。

C#はその前進となるC++(シープラスプラス)と、Java(ジャバ)というプログラミング言語を組み合わせて作られた言語であり、オブジェクト指向プログラミングという考え方が採用されています。

C#を学習するうえでオブジェクト指向プログラミングの概念は必要となりますので、ぜひ覚えていって下さい。

ななころ

Twitter(@nana_korobi04)でも情報発信していますので、
フォローいただけると嬉しいです!

目次

オブジェクト指向とは

オブジェクトとは「モノ」を指しており、プログラミングにおいて何か処理を行う1つ1つの機能をオブジェクトと呼んでいます。

オブジェクト指向は、そういった1つ1つの機能を組み合わせて、1つの大きなシステムを作る考え方をいいます。

例えば、パソコンは映像を映すモニタ、文字を入力するキーボード、画面を操作するマウスなどの機能が組み合わさって構成されています。

パソコンの周辺機器はどんどん性能が良いものが出てきますので、マウスを有線からBluetoothに変えたい場合など、パソコンの機能の一部だけを交換したいということがあるかと思います。

そうなった時にパソコンの機能が全て1つの筐体にまとまっていると、どれか一部の機能だけ交換したくても丸ごと交換しなくてはなりません。

オブジェクト指向プログラミングは、機能を分けることで後から変更が発生した際に一部の機能だけを改修することで他の機能への影響を最小限にしています。

また、ある機能を改修することで、その機能を共通で使っている他のパソコンにも反映がされるため、それぞれのパソコンの中にある同じ機能を改修するという手間も無くなります。

オブジェクト指向については下記の記事でご紹介しています。
是非ご参考にしてください!

C#の特徴

C#の活用シーンはGUIアプリケーションと呼ばれる、フォーム画面やボタン操作などをユーザーの目に見える部分の開発で使われています。

開発支援ツールが豊富に用意されており、いちからコーディングをしなくてもフォーム画面に必要なボタンなどのパーツをドラッグ&ドロップで配置することで開発ができるため、パズル感覚で進めることができます。

C#で作られた有名なサービスやアプリケーションには、Microsoftの公式ホームページである「MSN」同社の開発した検索サイトの「Bing」「価格.com」などがあります。

しかし、最も多く使われているのは企業の業務アプリケーションでしょう。

業務アプリケーションの開発は、Javaのシェアが増えつつありますが、既に世の中にはC#で開発された業務アプリケーションが無数に存在しており、需要の高いプログラミング言語です。

また、C#ではゲーム開発にも利用されており、ゲームエンジンと呼ばれるゲーム開発を支援するソフトウェア「Unity」にもC#が使われています。

Unityで開発されたゲームは「ポケモンGO」「スーパーマリオランド」などがあり、3Dデータを得意としているため、VRやARといった新しいテクノロジーを開発することもできます。

C#のはじめかた

前述の通りC#はMicrosoft社で開発されたプログラミング言語のため、同社からリリースされたIDE(統合開発環境)であるVisual Studioというツールでアプリケーションの開発をするのが一般的です。

ななころ

IDE(統合開発環境)は、ソースコードを書くための「エディタ」や、ソースコードから実行ファイルを生成するための「コンパイラ」、またソースコードの検証を行う「デバッガ」などが備わっている開発支援ツールです。

Visual StudioはWindows版とMacOS版があるため、ご自身のOSにあわせて下記のサイトからダウンロードが可能です。

Visual Studio
Visual Studio Tools のダウンロード - Windows、Mac、Linux 用の無料インストール Visual Studio IDE または VS Code を無料でダウンロードします。 Windows、Mac で Visual Studio Professional または Enterprise エディションをお試しください。

また、WindowsであればXamarin(ザマリン)というソフトウェアがVisual Studioに同梱されており、Xamarinを使うことでiOS、Android、MacOSなど複数のプラットフォームで動くプログラムを開発することができます。

C#のソースの書き方

下記は、コマンドプロンプトというWindowsにインストールされているコンソールに文字を表示するためのサンプルコードです。

using System;

class Program {
    static void Main(string[] args)    {
    // コンソールに文字を表示します
    Console.WriteLine("こんにちは{0}");
    }
}

1行目のソースコードの解説

1行目の「using System;」はSystemという名前空間を使う(using)という意味です。

名前空間とはあるグループに属する機能を別のグループの同じような名前の機能と分けて管理する考え方です。

例えば、青葉区という機能を使う場合、青葉区という地名が宮城県と神奈川県それぞれに存在するため、毎回県名から記述する必要があります。

県名
  • 宮城県仙台市青葉区
  • 神奈川県横浜市青葉区

「using 神奈川県」と指定しておけば、「青葉区」とだけ記述すれば神奈川県横浜市青葉区を利用することができるようになります。

つまり、名前空間を一度指定すればどのグループかを識別するための記述が不要となるのです。

Systemという名前空間には7行目の「Console.WriteLine」メソッドという文字を出力する機能を持っています。
(メソッドについては後述で説明します)

2行目のソースコードの解説

2行目の「class Program」はクラスと呼ばれるもので、クラスは設計図のようなものです。

クラスを指定しておくことで、後からそのクラスを使って一部の機能を変えた新しいクラスを作るなど流用することができるため、オブジェクト指向プログラミングの世界では必ずクラスを使うことになります。

4行目のソースコードの解説

4行目の「static void Main(string[] args)」について詳しく説明します。

最初の「static」は「インスタンス化をせずに使う」という意味で、インスタンス化とは他の場所からクラスを呼び出す場合に必要な手続きなのですが、このクラスは定義部分なのでインスタンス化は不要なためstaticと記述しています。

次の「void 」の部分はメソッドからの結果が戻る場合は、戻り値として数値が返されるため、整数を意味する「int」を指定するのですが、今回のサンプルコードのMainメソッドのように戻り値が不要な場合はvoid(何もない)を指定します。

最後の「Main(string[] args)」ですが、Mainメソッドの後ろにある()の中はコマンドライン引数というメソッドが処理する情報を格納しています。

stringは文字列を扱うときに指定するデータ型という引数で、argsはデータを格納するための箱のようなものです。

7行目のソースコードの解説

7行目の「Console.WriteLine(“こんにちは{0}”);」は、Console.WriteLineメソッドという、コマンドプロンプトに文字を出力する機能です。

メソッドとは、クラスに属している特定の機能や処理をひとまとめにしたもので、引数という情報をインプットし、戻り値というアウトプットを出力します。

引数の(“こんにちは{0}”)は、「こんにちは{0}」という文字列をコンソールに出力します。

{0}はコマンドライン引数を表示させるためのもので、先ほどMainメソッドのargsに入ってきた情報を取得します。

例えば、上記のソースコードをコンパイルしてC#のプログラムを作って実行してみましょう。

「test.exe Taro」と実行した場合、コマンドライン引数である「Taro」Mainメソッドを介して、Console.WriteLineメソッドの{0}の部分に出力され、「こんにちはTaro」とコンソールに表示されます。

なお、6行目の「// コンソールに文字を表示します」はコメントアウトといって、実際にはコンピュータでは処理されず、人間同士の情報共有に使われる部分になります。

まとめ

本記事ではC#の書き方について解説していきました。

単純に文字列を出力するサンプルコードでしたが、1つづつ構文の意味を読み解いていくと、C#のソースの書き方、オブジェクト指向プログラミングの理解に繋がることでしょう。

その中で重要なキーワードは下記になります。

C#のキーワード
  • 名前空間
  • クラス
  • メソッド
  • 引数

今回登場した上記の概念はどんなオブジェクト指向プログラムでも使いますので、是非ご自身でも調べて理解を深めるようにして下さい。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次