PDA

View Full Version : *فوری*ایجاد متغیر سراسری



ghasedak2002
چهارشنبه 04 بهمن 1391, 11:40 صبح
سلام. در زبان سی شارپ در صورتی که بخوایم یه متغیر سراسری تعریف کنیم که تو همه فرم ها و کلاس ها قابل دسترسی باشه باید چیکار کنیم و کجا متغیر رو تعریف کنیم؟؟؟؟؟؟؟؟؟؟؟؟ با دستور زیر نشد:
public static string s;

group45
چهارشنبه 04 بهمن 1391, 11:53 صبح
سلام
در فرم اولتون بنویسید public string s;
حالا مثلا در فرم دوم باید اول از فرم اول یه تعریف داشته باشید بعد متغیرتون رو صدا بزنید in form2 : form1 f1=new form1(); string d=f1.s;

danialafshari
چهارشنبه 04 بهمن 1391, 12:06 عصر
سلام. در زبان سی شارپ در صورتی که بخوایم یه متغیر سراسری تعریف کنیم که تو همه فرم ها و کلاس ها قابل دسترسی باشه باید چیکار کنیم و کجا متغیر رو تعریف کنیم؟؟؟؟؟؟؟؟؟؟؟؟ با دستور زیر نشد:
public static string s;

سلام دوست عزیز
بهتره در class قرار بدید
Class :
class Class1
{
public string s = null;
}

form1:
public partial class Form1 : Form
{
Class1 c = new Class1();
private void button1_Click(object sender, EventArgs e)
{
c.s = "danial";
}
موفق باشی

کاربر مبتدی
چهارشنبه 04 بهمن 1391, 12:42 عصر
من فکر میکنم منظورتون ایجاد ثابت باشه که اگر درست فکر کرده باشم باید توی فرم اصلی کدشو ایجاد کنید مثلاً
const int a=123

SHD.NET
چهارشنبه 04 بهمن 1391, 13:38 عصر
به نظرم بهترین راه اینه که متغیرتون رو توی یه Module یا یه Class قرار بدین

ordebehesht
چهارشنبه 04 بهمن 1391, 13:40 عصر
class Class1
{
public static string s = null;
}




آینکه دوستمون گفته راه خوبیه از نوع static‌بگیر که مقدارش که از تو یه فرمی میدی قابل دسترسی توسط دیگه فرمهات باشه

hakim22
چهارشنبه 04 بهمن 1391, 16:13 عصر
بهترین راه استفاده از متغیر Static است . می توانید این کار را در قسمت program.cs هم انجام دهید. یا یک کلاس اختصاصی از نوع Static بسازید که همه ی متغیرهاش خود به خود Static است. البته کلا روش خوبی نیست. با همه ی Design Pattern ها مشکل داره. پیشنهاد میکنم از متدهای Dependency Injection استفاده کنید.

fakhravari
چهارشنبه 04 بهمن 1391, 19:37 عصر
بهترین روش برای تعریف یک متغیر سراسری کجاست؟
مثلا در وب از سشن استفاده میشه در ویندوز وقتی کاربر لاگین کرد اطلاعات شخصی اونو کجا نگه داری کنیم؟

plus
چهارشنبه 04 بهمن 1391, 19:45 عصر
بهترین روش برای تعریف یک متغیر سراسری کجاست؟
مثلا در وب از سشن استفاده میشه در ویندوز وقتی کاربر لاگین کرد اطلاعات شخصی اونو کجا نگه داری کنیم؟
دوستان توضیح دادن.سمت Web یکمی موضوع پیچیده تره، سمت Client کافی شما یک کلاس Static داشته باشید:

namespace WindowsFormsApplication1
{
public static class LoginInfo
{
private static int userId;
public static bool Login(string username, string password)
{
// perform login
userId = ...;
}
public static string UserId
{
get { return userId; }
}
}
}

و برای دسترسی به مثلا آیدی کاربر لاگین شده:

if (LoginInfo.UserId > 0)
{
...
}

البته تفاوتی که اینجا با وب وجود داره بحث امنیتیش هست.در ایجا، اطلاعات کاربر، مثلا userId در حافظه نرم افزار (سمت کاربر) قرار میگیره که قابل دسترسی و ویرایش هست.باید در این مورد فکری بشه...

danialafshari
چهارشنبه 04 بهمن 1391, 21:24 عصر
بهترین روش برای تعریف یک متغیر سراسری کجاست؟
مثلا در وب از سشن استفاده میشه در ویندوز وقتی کاربر لاگین کرد اطلاعات شخصی اونو کجا نگه داری کنیم؟

همونطور که در بالا گفتم : کلاس = Class.cs

vahid2112
پنج شنبه 05 بهمن 1391, 01:50 صبح
بهترین روش برای تعریف یک متغیر سراسری کجاست؟
مثلا در وب از سشن استفاده میشه در ویندوز وقتی کاربر لاگین کرد اطلاعات شخصی اونو کجا نگه داری کنیم؟

شما از Setting هم برای ذخیره چنین اطلاعاتی میتونید استفاده کنید

arman_Delta2002
پنج شنبه 05 بهمن 1391, 07:54 صبح
وای وای وای مشکل سی شارپ همینه دیگه بخواطر تعریف یه متقیر سراسری باید یه میز مزاکره گزاشت :قهقهه: ولی تو وی بی یه ماژول اضافه میکنی public AA as long خلاصصصصص:بامزه: تو کل برنامه هرجا با aa کار داشتی همیشه حاظره فقط کافیه بگی aa

plus
پنج شنبه 05 بهمن 1391, 16:44 عصر
وای وای وای مشکل سی شارپ همینه دیگه بخواطر تعریف یه متقیر سراسری باید یه میز مزاکره گزاشت :قهقهه: ولی تو وی بی یه ماژول اضافه میکنی public AA as long خلاصصصصص:بامزه: تو کل برنامه هرجا با aa کار داشتی همیشه حاظره فقط کافیه بگی aa
بله خوب...البته با ذکر این نکته که اصولا تعریف متغیر سراسری (به شیوه VB) یک امتیاز منفی برای برنامه هست، کنترل متغیر های سراسری کار مشکلیه و میتونه موجب خطا در برنامه بشه...