משתנה גלובלי

  • פותח הנושא rnan
  • פורסם בתאריך

rnan

New member
משתנה גלובלי

שלום #C APP איך אני יכול שמשתנה יהיה גלובלי לכל התוכנית ולכל ה FORM ( שלא נגזרים מהראשי אבל כן נפתחים דרכו) ואני מכיר את הדרך לגשת על ידי פרמטר של הפורם ואז להגיע למשתנה אבל אני מחפש איזה שהוא משתנה שכל התוכנית מכירה אותו מכל הכיוונים בלי גישה דרך נתיב מסויים. חשבתי אולי STATIC אבל זה לא עובד לי.
 

asafeven

New member
Application

בדוט נט 2005 לפחות יש calss בשם application, אפשר לשים שם משתנים וכל האפליקציה מכירה אותם. לדוגמא
public class Application public int Count { get { return count; } } public form.... { Application.Count = ... }​
 

asafeven

New member
מה לא עובד?

מצאת את class בשם application? שכחתי לציין אם כי זה היה נראה לי ברור שהמשתנים צריכים להיות static כדי להגיע אליהם בצורה כזו.
 

pagis

New member
הדרך היחידה לעשות משתנה גלובלי באמת

בדוט נט היא דרך ה MSIL.המבנה של הגדרת משתנה ב MSIL הוא
[AssemblyName]NamespaceName.Classname::MemberName(args)​
MSIL מבחינתו בכלל לא מכיר את המיקום הנוכחי שלך, כלומר זה שאתה כרגע עובד בתוך קלאס מסויים, לא מעניין אותו, ב MSIL תמיד יהיה רשום מסלול מלא כי הוא לא יודע איפה אתה נמצא בכל רגע (כמו שהקומפיילר יודע) ה AssemblyName הדיפולטי הוא הנוכחי (כי הרי חייב להיות משהו) אבל ל NamespaceName ול Classname אין דיפולט, אם תכתוב משתנה בתוך קוד ה MSIL שלך בלי לציין את ה NamespaceName.Classname. הבעיה בקטע הזה היא שאתה עורך ישירות את ה MSIL, מה שאומר שלפני שהקוד קיים בצורתו ה MSIL-ית המשתנה בכלל לא קיים (כי עדיין לא הגדרת אותו) מה שאומר שאתה מתייחס אליו בקוד שלך לפני שהוא קיים, מה שיקפיץ שגיאת קומפילציה... הפתרון הוא אחד משניים: לכתוב את כל הקוד ולקמפל בלי דיבאגיג או לכתוב בכל קלאס משתנה מקומי עם אותו שם ואז בעריכת ה MSIL להוריד את כל ההגדרות של המשתנים ולהשאיר רק את ההתיחסות אליהם. תהנה
 

rnan

New member
../images/Emo123.gifנראה לי

שהמשתנה הכי קל לעשות בסוף זה קובץ קטן ומגעיל בגודל בייט אחד שיכיל לי את ה INT הזה
 

omerholz

New member
הוא שאל איך לעשות משתנה גלובאלי

משתנה גלובאלי אמיתי בדוט נט יש רק דרך אחת לעשות (עד כמה שאני יודע) וזה מה שהסברתי. חשוב להדגיש שעד היום נתקלתי במעט מאוד מקרים שבהם היה באמת נחוץ משתנה גלובאלי. השימוש העיקרי שאני מוצא באופן אישי להגדרת משתנים בצורה כזו היא שזה מקשה על decompile של האסמבלי שלך.
 

rnan

New member
../images/Emo189.gif סוף סוף תשובה לעניין ../images/Emo45.gif

 

pagis

New member
סינגלטון הוא לא משתנה גלובאלי

א. נכון יותר לעבוד עם סינגלטון למרבית המטרות. ב. סינגלטון אינו משתנה גלובאלי. משתנה גלובאלי הוא דבר מוגדר מאוד, זה שאתה יכל לענות על צרכים מסויימים ע"י שימוש במשתנה גלובלי או בDP של סינגלטון, עדיין לא הופך אותו למשתנה גלובאלי.
 

nadav1974

New member
סינגלטון הוא אבסטרקציה

OO למשתנה גלובלי. הוא נועד בדיוק בשביל זה.
 
למעלה