Skip to content

Latest commit

 

History

History
126 lines (105 loc) · 6.28 KB

L05.md

File metadata and controls

126 lines (105 loc) · 6.28 KB

C#の出力

Console.WriteLine() ... C言語でいうところのprintf。()内に文字列や変数を入れる。

//例
static void Main()
{
    int num = 5;
    bool bo = true;
    string str = "abcde";

    Console.WriteLine(num);
    Console.WriteLine(bo);
    Console.WriteLine(str);
}
実行結果:
5
True
abcde

string型は文字列を扱う専用のデータ型。boolはブール値(trueまたはfalse)を表します。

C#のコンパイル

[VSCode使用の方] 環境変数にてPathをcsc.exeがあるフォルダまでつなぐ。Windowsに標準搭載されている(Cドライブにあります)。"csc ファイル名.cs"でコンパイルを行う。

[Visual Studio使用の方] こちらのURLの手順を踏んでください

クラスとは

クラスとは、プログラムを実行するための処理をまとめたオブジェクトで、クラスの処理の中にはメンバ変数や処理を実行するためのメソッドがあります。

オブジェクトを作るための設計図のようなもので、 オブジェクト指向プログラミングの中心となるものです。

ちなみに、メンバ変数とはクラス内で使用する変数のことメソッドとはメンバ変数などを使って行う処理をひと塊にまとめたものです(つまり関数のこと)。

クラスとインスタンス

操作の対象となるものをオブジェクトといいます。 オブジェクトを作る場合、まず設計図が必要になります。 内部がどういう構造になっているのか、外部からどのような操作をすることが出来るのかを決めてやるわけです。 オブジェクトの設計図のことをクラス(class)といいます。 それに対し、設計図を元に作られたオブジェクトの実体のことをインスタンス(instance)といいます。

クラス定義

C#では以下のようにしてクラスを定義します。

using System;
 
class クラス名{ //クラス名は任意。大文字から始まる。
    //クラス内の処理を記述する
}

ここでソースコードの先頭に出てきた「using」ですが、4種類あり、これは「usingディレクティブ」というものです。ここではそのファイル(~.cs)内で使用する名前空間(namespace)を指定しています。
名前空間とは、クラスを種類ごとに分けて管理するための機構です。 例えば、コンソール画面に文字列を出力する「WriteLine」メソッドは、正しくは「System.Console.WriteLine」という場所に存在します。 しかし、「C#の出力」の説明では「Console.WriteLine」という形で実行できています。 これを可能にしているのがコード先頭のusingディレクティブです。

メンバ変数について

クラスの中で宣言される変数をメンバ変数と言います。こちらはクラス内で有効な変数です。

//例
using System;
 
class Sample{
    int a = 1;
    string str = "test";
}

このようなSampleクラスがあるとき、"a"や"str"がメンバ変数となります。

メンバ関数について

メンバ変数同様、クラスの中で宣言されるメソッドをメンバ関数と呼びます。

//例
using System;
 
class Sample{
    public static void test1(){
        // メソッド内の処理を記述
    }
}

このようにしてメソッドを宣言する事ができます。 ちなみに、publicはどこからでもアクセス可能になり、staticというのは静的メンバーの宣言のこと。静的メンバーとは、インスタンス化なしでも呼べて、動的メンバーとはインスタンス化しないと呼べません。インスタンス化(インスタンス生成)とは次の項の説明参照。

インスタンス生成

クラスからインスタンスを生成するには以下のように記述します。

クラス名 変数名; //インスタンスを格納する変数
変数 = new クラス名();

このように記述する事で、インスタンスを生成する事ができます。また、以下のように1行で記述することも可能です。

クラス名 変数名 = new クラス名();

インスタンスからメンバ変数、メンバ関数を利用する際は、以下のように記述します

変数名.メンバ名

コンストラクタについて

コンストラクタはクラスを生成したときに自動的に実行される、初期化用のメソッドです。コンストラクタへ渡す引数を指定するときは以下のようにする。

Sample 変数名 = new クラス名(値);

この時のポイントは、以下のようになります。

・コンストラクタ名は、クラス名と同じにする必要がある
・コンストラクタに引数を渡すときは、インスタンス生成する際に値を指定する

クラスの継承について

継承とは、あるクラスの機能を受け継いで新しいクラスを作ることを言います。 継承をする際には、クラスの宣言時に以下のように記述します。

Class名 : 継承したいClass名

基本となったクラスを基底クラス、継承したクラスを派生クラスと言います。実行時に基底クラスの処理 -> 派生クラスの処理という順に実行されます。

オーバーロードについて

C#には、オーバーロードという機能があります。これは、1つのクラス内に引数の異なる同じ名前のメソッドを扱うことができる機能です。 引数が1つの場合はこちらを使い、二つの場合これを使う。といったような使い方が可能です。

オーバーライドについて

オーバーライドをすることで、派生クラスで基底クラスのメソッドを書き換えることや、新しくメソッドを作ることができます。つまり、基底クラスと同じ名前のメソッドでも、異なった動きをすることが可能となります。オーバーライドを行うためには、基底クラスに「Virtual修飾子」を付与する必要があります。