第14回 C#入門 C#プログラミングでListクラスとジェネリックを扱ってみよう!
今回はリストとジェネリックについて説明致します。
今回もC#を使用してVisual Studioで説明したいと思います。
リストは配列の考え方に近いため少し、混乱するかもしれません、ですのでここで、配列について少おさらいしましょう。
配列は同じ型の変数を集めたもので、書き方としては
var test = new int [ ]{ 180, 100 , 90 , 80, 180 , 80 ,55 , 100 , 55 }
Var 変数名 イコール new 型名 [ ] { };
このように記載しました。実は配列には弱点があります、それは要素を指定した後追加ができないということです。配列は途中で要素を付け足すことができません。皆さんはまだ触れたことはないかもしれませんが、この要素を途中で追加できるという機能はとても大事です。
ここで、LIstが役にたちます。Listは要素を必要としません。少し難しくなりますが、メモリの確保の仕方が違うのです。
動的にメモリを確保するのが、配列で
性的メモリを確保しているのが、リストです。
しかし、配列と同じく、LIstも同じデータの型をまとめたもの、変数の集合体のようなイメージです。
どのようなものかと言いますと
それでは実際にプログラムを確認してみましょう。
using System;
using System.Collections.Generic;
namespace Application
{
class Program
{
static void Main(string[] args)
{
var IntegerList = new List<int>();
int a = IntegerList[0];
Console.WriteLine(a);
}
}
}
まず、よく見て見ますとこの間勉強したusing でSystem.Collections.Generic;と記載されいます。
Listを使用したい場合は必ずこのusingでSystem.Collections.Generic;と記載してください。
順を追って説明していきますと、
プログラムはメインメソッドからスタートしますので、まずインスタンスが生成されいます。ここで、IntegerListにint型のListが作成されたというイメージです。しかし、今実態はありますが、ここに値は一つも入っていない状態なんですね
次にListの0番目を変数aに入れています。そしてライトラインで変数aを出力しています。試しにこれで実行して見ますと。
このようになったと思います。これはプログラムとして例外が発生したという意味です。
どういうことかと言いますと、listを生成して居ますが、2行目で、要素を入れいないにも関わらず呼び出しているため
プログラムとして例外が表示されて居ます。ですので、Listを使用したい場合は要素をいれてあげる必要があります。どのようにするかと言いますと変数名.Add(追加)で要素に追加できます。このように記載してみます。
using System;
using System.Collections.Generic;
namespace Application
{
class Program
{
static void Main(string[] args)
{
var watsonList = new List<string>();
watsonList.Add(“welcome”);
watsonList.Add("watson");
watsonList.Add(“C#”);
Console.WriteLine(watsonList[0]);
Console.WriteLine(watsonList[1]);
Console.WriteLine(watsonList[2]);
}
}
}
これで実行すると。このようにwelcome watson C#と出力されました。順に説明していきます。watsonListに文字型のListが生成されました。ただ、現段階では実態のみで値が入っていない状態です。ここで次に、watsonList.Addで値を加えることができます。ここではwelcomeを付け加えています。同じようにwatson、C#もwatsonListに入れています。そしてWriteLineでwatsonListで出力しています。ですので、このようにwelcome watson C#と出力されました。配列ではできないことですので、是非みなさんも実際にコディングしてみて体験してください。
ここからは少しリストと違う話になります。
■ここで皆さんも少しきになっていると思いますが、
UsingでこのGeneric(ジェネリック)というものを宣言していますよね、このジェネリックについて説明したいと思います。ジェネリックとは簡単に言いますと再利用という考え方です。どういうことかと言いますと、実際にプログラムを確認してみましょう。
このように二つのメソッドを記載して見ます。
String name(string hikisu)
{
Console.WriteLine(hikisu);
}
Int age(int hikisu)
{
Console.WriteLine(hikisu);
}
この二つのメソッドを記載してみます。
よく見てますとこの2つメソッドは処理内容が
同じ処理がされていることがわかりますよね。
この2つのメソッドの違いは型のみですね。
型がstringとint の違いがあります。
この時にジェネリックをという利用できます。
ジェネリックすることで再利用をすることがでます。
static void Main(string[]args)
{
string a ="watson";
MainClass abc = new MainClass();
abc.genelic(a);
}
public void genelic <T>(T a)
{
Console.WriteLine(a);
}
試しにこれで実行してみますと「watson」が出力されました。ここで変数の値を変えて見ます。
static void Main(string[]args)
{
//↓↓↓変更
string a =2;
//↑↑↑変更
MainClass abc = new MainClass();
abc.genelic(a);
}
public void genelic <T>(T a)
{
Console.WriteLine(a);
}
これで実行しますと「2」が出力されました。ジェネリックを使用することで、同じ処理を一つにまとめることができます。
はい、今回はListとジェネリックについてということで配列とListの違いから、実際にListを用いて様々なデータを扱って見ました。その後に再利用するというイメージであるジェネリックについても説明させていただきました。また、冒頭でも説明しましたが、Listやジェネリックを使用したい場合は必ず、using でSystem.Collections.Generic;を宣言して下さい。よく忘れてしまいますので気をつけてください。次回の講座ではインターフェイスについての内容となっています。インターフェイスというのはオブジェクト思考とすごく密接していますので、是非ご覧下さい。
以上で、C#入門を終了と致します。ご静聴ありがとうございました。
コメント