سلام. در ابتدا عرض کنم مبتدی هستم .
یک public static class تعریف کردم که داخلش یک متغیر به نام f از نو باز هم public decimal تعریف شده.
تابع دوم به صورت public decimal هم نوشتم
تابع سوم از نوع public void دارم که باید از تابع اول و کلاس بالایی استفاده کنه .
حالا مشکلم اینه که با هر بار فراخوانی تابع سوم مقدار متغیری که داخل کلاس هست صفر میشه. متغیر f1....... یعنی مقدار پیش فرض اولیش در صورتی که من نمیخوام هر بار مقدار پیش فرضش درش قرار بگیره.
ممنون میشم راهنماییم کنید. اگر لازمه تا کد رو قرار بدم.
public partial class Form1 : Form { public static class FinalPrice { public static decimal f1=0,f2=0,f3=0,f4=0,f5=0; public static string stime1,stime2,stime3,stime4,stime5; public static Boolean a1=true, a2; } public decimal concate(string a , string b) { string x,y; decimal z; decimal result; x = a.Substring(0, 2); y = a.Substring(3, 2); z =Convert.ToDecimal( a.Substring(6, 2)); result =((( (Convert.ToInt32(x) * 60) + Convert.ToInt32(y)+((z)/60))* Convert.ToInt32(b))/60) ; return Math.Ceiling(result); } public void Next(string a, Timer tt, System.Diagnostics.Stopwatch ss,decimal f,string c,Boolean aa,ListBox l,string b,string d,string st) { if (a.Length > 0) if (MessageBox.Show("آیا از ثبت زمان فعلی و شروع زمان جدید اطمینان دارید ؟ ", " هشدار ", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2) == DialogResult.Yes) { tt.Stop(); f = Convert.ToDecimal(c); ss.Reset(); switch(aa) { case true: { l.Items.Add("Start: " + a + " ==> End: " + DateTime.Now.ToString("HH:mm") + " ==? Cost: " + Convert.ToString(concate(b, d))); aa = false; st = DateTime.Now.ToString("HH:mm"); break; } case false : l.Items.Add("Start: " + st + " ==> End: " + DateTime.Now.ToString("HH:mm") + " ==> Cost: " + Convert.ToString(concate(b, d))); st = DateTime.Now.ToString("HH:mm"); break; } c = ""; b = ""; tt.Start(); ss.Start(); }
سلام
نکات زیر را دقت کن:
متغیرهایت را بصورت پراپرتی نگه دار نه متغیر ساده. اینجوری:
public static decimal f{get;set;}
و حتمن هم آنها را استاتیک کن
مورد دوم اینکه متدهایت را هم استاتیک کن.
البته بنده بطور کلی با نگهداری متغیرها بصورت سراسری کاملا مخالفم
تو استفاده از متغییر Static خیلی دقت کن
این نوع متغیر برای همه کاربرا هست و استفاده میشه و هر کاربری که مقدارش رو تغییر بده برای همه تغییر میکنه
از سشن یا امثال این استفاده کن راحت تری
من خودم روزای اول کارم یه پروژم بخاطر متغییر سراسری رفت رو هوا با نظر AmirGhasem کاملا موافقم
سلام. من برنامه ناقصی رو که نوشتم میفرستم. ممنون میشم بیشتر راهنماییم کنید. پیشاپیش از کدنویسی داغونم عذرخواهی میکنم :)))) برنامه 2 قسمت داره فعلا ( پلی استیشن 1 و پلی استیشن 2). برنامه توی قست 2 درست اجرا میشه. ولی توی قسمت 1 که از توابع و کلاس استفاده کردم تا حجم کدنویسیم کمتر بشه و چندین کد چندین جا تکرار نشه ایرادی وجود داره که نمیدونم چجوری حلش کنم. مراحل اجرا بصورت زیر : اول توی قسمت 1 روی ریدیو باتن یک نفره کلیک و سپس روی دکمه شروع کلیک کنید. زمانبندی شروع میشه. بعدش روی دکمه ی (بعدی) کلیک کنید. دو سه بار تا نتایج ثبت بشه توی لیست باکس پایینش. حالا همین مراحلو توی قسمت 2 انجام بدید. نتایج ثبت شده رو مقایسه کنید. دلیل وجود اشکال توی قسمت 1 زمانی که روی دکمه ی (بعدی) کلیک میکنم و باعث میشه دوتا تکست باکس صفر بشه چیه؟ ممنون از راهنماییتون
دوستان خیلی واسم مهمه کسی نمیتونه کمکم کنه؟
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)