int型やstring型は宣言するだけでそのまま使用できる。Cの変数の使い方と変わらない。
ただ、デリゲート型やAllayList型を見ているとnewしてからその変数を使っている。
デリゲート型を変数宣言して += で関数を登録しようとしても
「未割り当てのローカル変数が使われました」とコンパイルが通らない。
これはnewせねば使えないのか?int型のように変数宣言(=インスタンス化)しただけじゃ使えないのか?と疑問に思っていた
未割り当てっていうから、なんかの数値が代入されていれば使えるのか。と思いnullを入れてみたら
何とコンパイルが通って通常通りの動きをしてくれるではないか。
int型もそうだけど、new = インスタンス生成じゃないんですね?
きっと、クラス変数を宣言した時にはすでにインスタンス化されているんでしょうね。
じゃあnew演算子っていったいなんなんだよと。さらに疑問が浮上してしまいました。
とモヤモヤしている質問のような日記です。
あー、コンストラクタ問題かー・・・・。(解決)
namespace ConsoleApplication5
{
public delegate void mydele();
class Program
{
static void Main(string[] args)
{
EventClass _ev = new EventClass();
EventMethod _evm = new EventMethod();
//デリゲート型を宣言するだけ。newしない
mydele md;
md = null;
md += _evm.Out;
md();
}
class EventClass{
public event mydele eventname;
public void OnEvent(){
if(eventname != null){
eventname();
}
}
}
class EventMethod{
public void Out(){
Console.WriteLine("EventTest");
}
}
}
}