マルチスレッド処理
アプリはだいたいシングルスレッド(unityならawake().start()C#ならmain()みたいな)だけどネットワーク通信するとき処理が1個しか走らないんじゃ困るから個別に処理を走らせるためにある。 非推奨で触るべきじゃないけどThreadクラスというものもある。 スレッドの生成と実行をより改善したのがスレッドプール。 スレッドプールを使ったスレッドのことをタスクという。
[Read More]アプリはだいたいシングルスレッド(unityならawake().start()C#ならmain()みたいな)だけどネットワーク通信するとき処理が1個しか走らないんじゃ困るから個別に処理を走らせるためにある。 非推奨で触るべきじゃないけどThreadクラスというものもある。 スレッドの生成と実行をより改善したのがスレッドプール。 スレッドプールを使ったスレッドのことをタスクという。
[Read More]//クラスの外で定義
delegate void DoDeligate(string str);
class DelegateTest
{
static void Heppoko(string s)
{
//Heppokoの処理内容
Console.WriteLine(s);
}
static void StringCount(string s)
{
//StringCountの処理内容
int num = s.Length;
Console.WriteLine(num);
}
//プログラムが動いたとき一回だけこの中の処理が動く前提で例を書いている。
void start()
{
//Heppokoメソッドが使える
var v1 = new DoDeligate(Heppoko);
//これは
//DoDeligate del = method;
//とも書ける。
v1("へっぽこ太郎");
//DoDeligateメソッドが使える
var v2 = new DoDeligate(StringCount);
v2("へっぽこ太郎");
}
}
デリゲートはメソッドを1個だけじゃなくて複数受け取ることもできる。 上のHeppoko,StringCountメソッドがある前提で例を書くと
[Read More]//親クラス
class Person{
//定義内容
}
//子クラス
class BusinessPerson : Person{
//Personクラスを継承した小クラスの定義内容
}
Person p = new BusinessPerson();
//親クラスの中に小クラスのインスタンスをそのまま入れれる、
小クラスに親クラスを入れる。(入れたいクラス名)、クラス名 as 入れたいクラス名とも書くことができる。asで書くと正しくキャストできない場合nullが帰ってくる。
[Read More]オーバーロードとは、1つのクラスに同じ名前のメソッドを複数定義すること 引数によって処理を切り替えれる。
...
private string firstName;
private string lastName;
public void ShowName(string firstName)
{
this.firstName = firstName;
}
public void ShowName(String firstName, string lastName)
{
this.firstName = firstName;
this.lastName = lastName;
}
...
確実な初期化を実現する機能がコンストラクタならば、確実な終了処理を実現するのがデストラクタ。全然見る機会がなかったと思ったら、今はガベージコレクションとやらが勝手に掃除してくれるみたいです。
[Read More]unityを使っていて勉強不足で他の方が書いたコードがわからなかったりすることが結構あります。その時用に自分では使わないけどコードを読むためにぱっと全体を勉強しようと思いました。
[Read More]