www.doronamir.com

E-mail: doron@doronamir.com

 

 

Constructor Static

 

 Constructor שעובד רק פעם אחת  כאשר קיימת קריאה לפונקצייה סטטית  או כאשר נוצר מופע מהמחלקה הנוכחית :

 

התכנית הנ"ל קוראת לConstructor  הסטטי פעם אחת בלבד במהלך התכנית .

 

Windows Application

 

 

        המחלקה מכילה Constructor סטטי המופעל פעם אחת המהלך התכנית

·        כאשר פונקצייה סטטית של המחלקה נקראת (או)

·        כאשר נוצר מופע מהמחלקה

public class StaticConstrucotr

        {

            private static int staticNunber =100;

 

            static StaticConstrucotr()

            {

                MessageBox.Show("Static Constructor work");

            }

 

 

            public static  int NextNumber()

            {

                return  staticNunber++;

            }

 

        }

 

        private void StaticConstructor_Click(object sender, System.EventArgs e)

        {

            int Num = StaticConstrucotr.NextNumber();

            MessageBox.Show(Num.ToString());

 

        }

 

 

Constructor Private

 

 Constructor שמונע יכולת לייצר מופע מהמחלקה  ( שגיאת קומפילציה )

 

בתכנית הנ"ל נכשל ניסיון יצירת המופע , כך ניתן לבנות מחלקה אשר ניתן להשתמש דרכה רק ע"י פונקציות סטטיות

 

 

    public class PrivateConstrucotr

        {

            private static int staticNunber =100;

 

            private PrivateConstrucotr()

            {

               

            }

 

            public static  int NextNumber()

            {

                return  staticNunber++;

            }

 

        }

 

    private void tnStaticConstructor_Click(object sender, System.EventArgs e)

        {

        PrivateConstrucotr obj = new PrivateConstrucotr();

 

        }

 

Single Pattern

ניתן להשתמש ב Static Constructor לאלצץ מחלקה לייצר מופע רק דרך מתודה מסויימת ,  בקוד הנ"ל ניתן לייצר אובייקט רק דרך המתודה הסטטית SingleObject של המחלקה  PrivateConstrucotr.

 

    public class PrivateConstrucotr

        {

            private static int staticNunber =100;

 

 

            private PrivateConstrucotr()

            {

               

            }

 

            public static PrivateConstrucotr SingleObject()

            {

            PrivateConstrucotr one = new PrivateConstrucotr();

            return one;

 

            }

 

            public int Number()

            {

                return  staticNunber++;

            }

 

        }

 

        private void tnStaticConstructor_Click(object sender, System.EventArgs e)

        {

         PrivateConstrucotr obj1= PrivateConstrucotr.SingleObject();

        string num =obj1.Number().ToString();

        MessageBox.Show(num);

        }