第10回 C#入門 C#プログラミングでメソッドとクラスを扱いましょう!
今回はメソッドについて説明致します。この動画を最後まで見て頂けましたら、是非もう一度見てください。この分野は初心者の方にとってはすごく難しい内容となっています。特に引数、戻り値のあたりは難しいですので、是非実際に体験してください。はい、今回もC#を使ってビジュアルスタジオで解説致します。
まずメソッドの概念ですが、メソッドはクラスが持つ関数のことです。関数といってもすこしわかりにくいと思いますが、これまでC#入門、if文やwhile文では条件文を満たしているときに下の中括弧の部分を処理していましたね。
関数は条件などはありませんが、そのif文やwhile文を大きくまとめたものです。つまり一連の処理を一つにまとめたものです。
一つにまとめることで、プログラムが見やすくわかりやすい処理になり複雑なプログラムでも組めるようになります。
そしてメソッドで一番大事なのはMainメソッドです。
プログラムはそこからスタートします。そしてプログラムはMainメソッドしか処理しません。
どいうことかと言いますと実際にプログラムを見ていきましょう。
試しにこのように記載して見ます。
using System;
using System.Collections.Generic;
namespace Application
{
class MainClass
{
static void Main(string[]args)
{
}
public void Hellowatson()
{
Console.WriteLine("welcome");
}
}
}
これで実行して見ます。
すると何も出力されませんでした。ここで、よく見て見ますと二つのメソッドを宣言されてありますよね。つまり、プログラムはメイン関数で処理が終了しています。ですので、このHellowatsonは実行されていません。メインメソッド以外のメッソドを実行したい場合はインスタンスを生成しないといけません。そしてその後に、実行したいメソッドを呼びださなければなりません。メソッドの呼び出し方はこのように記載します。
基本形態がありますのでこのように記載します。
メソッドの基本式として、
クラス名 変数名=new クラス();
変数名.メソッド名();
注意点として、メソッドは一つのクラスに同じ名前のメソッド名を書くことはできません。どういうことかと言いますとこのように記載することはできません。※別のクラスであれば、同じ名前を記載しても問題ありません。
試しにこのように記載して見ます。
using System;
class Application //クラスの定義
{
public void Main() //関数名(引数の型 引数の値)
{
Application obj=new Application()
obj.Hellowatson
}
public void Hellowatson() //関数名(引数の型 引数の値)
{
Console.WriteLine(“welcome”);
}
public static void Hellowatson()
{
Console.WriteLine(“watson C#”);
}
}
これで実行して見ますと、
エラーになります。
当然これで実行してしまいますとコンンピューたーさんはどっちのメソッドを処理したら良いか判断できないためです。ですので、別のクラスに同じ名前のメッソドを宣言しましょう。
こう言った場合の
正解のプログラムを記載します。
★別クラスのメッソドも書きこむ
using System;
class Application //クラスの定義
{
public void Main() //関数名(引数の型 引数の値)
{
Application obj=new Application()
obj.Hellowatson
}
public void Hellowatson() //関数名(引数の型 引数の値)
{
Console.WriteLine(“welcome”);
}
public static void Hellowatson()
{
Console.WriteLine(“watson C#”);
}
}
class sample
{
public static void Hellowatson()
{
Console.WriteLine(“watson C#”);
}
}
このように別のクラスの同じ名前のメソッドを記載して見ます。
これで実行しますと、ビルドエラーは発生せず、このようにwelcomeのみが出力されます。
メソッドの特徴の
★わかりやすい画像を表示。
引数と戻り値ついても説明します。簡単にいますと引数とはメソッドのインプット情報です戻り値とはアウトプット情報ですさぁここは論より証拠です。実際にプログラムを見ていきましょう。
namespace Application
{
class MainClass
{
static void Main(string[]args)
{
string hikisu = "watson";
MainClass obj = new MainClass();
obj.Hellowatson(hikisu);
}
public void Hellowatson(string hikisu)
{
Console.WriteLine("welcome {0}",hikisu);
}
}
}
このように記載して見ます。これで実行して見ますと。
Welcome watson と出力されました。順番に説明させていただきます。まずメインメソッドから処理されますので、変数 hikisuにwatsonという文字を入れ込んでます。そして次にHellowatsonというメソッドがインスタンスとして生成されますね。その後に実態化した、Hellowatsonメソッドを呼び出しています。ここで先ほど宣言したhikisu変数を渡しています。ここでプログラムはこのHellowatsonメソッドに移ります。ここで少し注目して欲しいのが、Hellowatsonの後にhikisuと書かれていますよね、ここでメイン関数で作っていた。watsonという言葉を渡されているというイメージです。そしてライトラインでWelcomeとhikisuに入っている値を出力するというイメージです。
ですのでここで実行した場合はWelcome watson と表示されました。これが引数というものです。ここでは、わかりやすくするために、メインメソッドでは同じ名前の変数を使用しましたが、実務の場合はこのように記載します。
namespace Application
{
class MainClass
{
static void Main(string[]args)
{
string a = "watson";
MainClass obj = new MainClass();
obj.Hellowatson(a);
}
public void Hellowatson(string hikisu)
{
Console.WriteLine("welcome {0}",hikisu);
}
}
}
このように書きます。
これが先ほどと同じ処理になりますので、当然実行しても同じ出力がされます。順を追って説明しますと。まずメインメソッドから処理されますので、この変数aにwatsonが入力されます。その後にこのインスタンスが生成されます。そして、ここでHellowatsonが呼び出されています。ここでHellowatsonに変数a、つまりwatsonを渡しています。次にプログラムはHellowatsonメソッドに飛びまして、ここで先ほど渡された、watsonをhikisuという変数で受け取っているイメージです。そしてライトラインでwelcomeと変数hikisuに入っている値が出力されました。
次に戻り値について説明致します。
戻り値は先ほども言いましたがアウトプットというイメージです。
論より証拠です。実際にプログラムを確認してみましょう。
namespace Application
{
class MainClass
{
static void Main(string[]args)
{
string a = "watson";
MainClass obj = new MainClass();
string b=obj.Hellowatson(a);
Console.WriteLine(b);
}
public void Hellowatson(string hikisu)
{
Console.WriteLine("welcome {0}",hikisu);
hikisu = "hensu";
return hikisu;
}
}
}
少しプログラムが複雑化していますので、
順を追って説明していきます。
まずメインメソッドから処理されますので、変数aにwatsonが代入されます。その後にこのクラスのインスタンスが生成されまして、ここでHellowatsonに変数aを渡していますここではwatsonという文字を渡しています。そしてプログラムはここでstring 型のHellowatsonに飛びます。先ほど渡せれたwatsonをこのhikisuという変数で受け取っています。次にライトラインでwelcomeと先ほど受け取ったhikisuつまりwatsonという文字を出力しています。実行結果を見て見ますとこのようにwelcome watsonと出力されています。その後に変数hikisuにhensuとい文字を上書きさせました。そしてこのreturn hikisuを実行します。このreturnというのは結果を呼び出し元にお返しますよというイメージです。つまりここではhensuとい文字をお返しますという意味になります。そして呼び出し元に戻りまして結果が変数bに代入されます。つまりbにはhensuが代入されいます。そしてライトラインでbの文字を出力しています。
実行結果を見て見ますとこのようにhensuと出力されいます。
少し復讐しますと注目して欲しい点はこのHellowatsonのメソッドの前のstringという型です。
これは文字の結果を返すことができるメソッドというイメージです。
そして二点目にreturn hikisuという点です。これはhikisuという変数の結果を返すというイメージです。
★ちなみにこのメインメソッドのvoidというのは空という意味です。
つまり戻り値がないという意味です。イメージとしてアウトプットする情報がないというイメージです。メソッドないで画面の出力などがされているだけで、そのメソッドを処理後、呼び出し元に戻った時に他に渡す情報がないということです。わかりやすくするためにこのような書き方をしましたが、もちろん省略してこのようにも記載することができます。
★
namespace Application
{
class MainClass
{
static void Main(string[]args)
{
string a = "watson";
MainClass obj = new MainClass();
Console.WriteLine(obj.Hellowatson(a));
}
public string Hellowatson(string hikisu)
{
Console.WriteLine("welcome {0}",hikisu);
hikisu = "hensu";
return hikisu;
}
}
}
これでも同じ結果が出力されます。
はい、今回はメソッドについてということで、メソッドの意味から実際にメソッドを用いて実行の流れまで説明しました。また、補足説明として引数や戻り値についても説明しました。引数や戻り値を入れるだけでプログラム複雑化してきますので少しでもわからないということがありましたら是非もう一度見てください。それでもわからない場合はこの動画のコメントに記載してください。次回の講座では静的メソッドについての内容となっています。静的メソッドというのは今回のメソッドと少しちがいますので、ここからは深い内容となってきますので是非てご覧下さい。
以上で、C#入門を終了と致します。ご静聴ありがとうございました。(๑╹ω╹๑ )
コメント