Newキーワード
newキーワードには次のような使い方があります.
1.演算子として
1)Object obj= new Object();
new演算子はリロードできません.オブジェクトの初期化に失敗すると、OutOfMemoryException異常が放出されます.
2.修飾子として
new修飾子を使用して、ベースクラスから継承されたメンバーを明示的に非表示にします.継承されたメンバーを非表示にするには、同じ名前で派生クラスにメンバーを宣言し、new修飾子で修飾します.
Sample:
BASE CLASS:
public class Base
{
private string str1;
public string Str1
{
get
{
return str1;
}
set
{
str1 = value;
}
}
public Base(string str1)
{
this.str1 = str1;
}
public string Method1()
{
return this.str1;
}
}
Inheriate Class:
public class Inheritate:Base
{
private string str2;
public string Str2
{
set { this.str2 = value; }
get { return this.str2; }
}
public Inheritate(string str2, string str1)
: base(str1)
{
this.str2 = str2;
}
public new string Method1()
{
return this.Str1 + ""+ this.Str2;
}
}
Newはメンバー変数だけでなく、メンバー関数にもクラスにも配置できます.
3.汎用型制約new制約用
Newコンストレイントは、汎用クラス宣言の任意のタイプのパラメータに共通のパラメータなしコンストラクション関数が必要であることを指定します.newコンストレイントを使用する場合は、このタイプは抽象タイプではありません.
1.演算子として
1)Object obj= new Object();
new演算子はリロードできません.オブジェクトの初期化に失敗すると、OutOfMemoryException異常が放出されます.
2.修飾子として
new修飾子を使用して、ベースクラスから継承されたメンバーを明示的に非表示にします.継承されたメンバーを非表示にするには、同じ名前で派生クラスにメンバーを宣言し、new修飾子で修飾します.
Sample:
BASE CLASS:
public class Base
{
private string str1;
public string Str1
{
get
{
return str1;
}
set
{
str1 = value;
}
}
public Base(string str1)
{
this.str1 = str1;
}
public string Method1()
{
return this.str1;
}
}
Inheriate Class:
public class Inheritate:Base
{
private string str2;
public string Str2
{
set { this.str2 = value; }
get { return this.str2; }
}
public Inheritate(string str2, string str1)
: base(str1)
{
this.str2 = str2;
}
public new string Method1()
{
return this.Str1 + ""+ this.Str2;
}
}
Newはメンバー変数だけでなく、メンバー関数にもクラスにも配置できます.
3.汎用型制約new制約用
Newコンストレイントは、汎用クラス宣言の任意のタイプのパラメータに共通のパラメータなしコンストラクション関数が必要であることを指定します.newコンストレイントを使用する場合は、このタイプは抽象タイプではありません.
class ItemFactory where T : new()
{
public T GetNewItem()
{
return new T();
}
}