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();
        }
    }