バナナでもわかる話

開設当初は計量経済学・統計学が専門の大学院生でした。今はデータを扱うお仕事をしています。統計学・経済学・投資理論・マーケティング等々に関する勉強・解説ブログ。ときどき趣味も。極力数式は使わずイメージで説明出来るよう心掛けていますが、時々暴走します。

【趣味記事】C#のプログラムの構成について

最近C#について勉強を始めたわけですが、やはり初めは大きな枠組みとしての名前空間、クラス、インスタンス、メソッドに関することを理解すべきだろうと思い、ざっくり整理してみました。

とりあえず準備

開発環境ですが、Microsoft Visual Studioを使うことにしました。特にこれといって決め手はありませんでしたが、何やら解説本が多かったので、とりあえずこれを使っておくかという感じです。

そういうわけで Microsoft Visual Studio を開いて、新規プロジェクト作成としてコンソールアプリに関してプロジェクトを作ってみると、次のようなコードが出てきたので、これを解釈するところから始めます。

using System;

namespace rensyu1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

名前空間

名前空間とはC#のクラスを保存する箱のようなものになります。
クラスに関する説明は下の記事参照
bananarian.hatenablog.com

どうやら既存のパッケージから名前空間を読み込んで、自分のプログラムに利用することも出来るようで、例えばさっきのコードだと

using System;

がそれにあたります。 System名前空間に該当し、.NET frameworkというMicrosoftが開発した環境の既存パッケージから読み込んでいます。


新しく自分で名前空間を定義するためには、

namespace (適当な名前)
{
}

と書くことで定義できます。先ほどの例だと

namespace rensyu1
{
}

としてrensyu1名前空間を定義しています。


クラス

クラスは前回説明しましたが、名前空間の中で定義します。今回の例だと

    class Program
    {
    }

という形でProgramクラスを定義しています。

メソッド

クラスの中ではメソッドフィールドを定義しますが、今回の例ではメソッドしかありません。
メソッドとは、クラスの中で定義する「機能」です。

static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }

このメソッドの説明ですが、まずstaticですね。このstaticが付いているようなメソッドをstatic method と呼びます。static class や static field もありますが、このstaticというものは要はインスタンスを作らずに使用することが出来るようにする際に使います。このようなものを修飾子と呼びます。

インスタンスってなんだというと、クラスのコピーみたいなやつです。普通はクラスからインスタンスを派生的に作り、プログラムを作るわけですが、今回のようにコンソール画面に"Hello World!"と表示するだけのプログラムに一々インスタンスを作るのは手間なのでこのようなstaticを利用します。

次にvoidですが、これは戻り値(返り値)が無いということを示します。今回は「コンソール画面に"Hello World!"と表示する」という操作を表すメソッドなので何かしらの操作をした後に値が出力するようなメソッドではありません。そこで void と書いておきます。

最後にMainメソッドですが、これはちょっと特別なメソッドで、プログラムを呼び出したときに初めに行われるメソッドです。


そういうわけで、このプログラムを実行するとコンソール画面に"Hello World!"と表示されます。


まとめ

名前空間 \supsetクラス \niフィールドやメソッド

といった感じでしょうか。これを基礎としてプログラムを組んでいくようです。