PDA

View Full Version : سوال در مورد کلاس و توابع static



hesam_a110
یک شنبه 27 بهمن 1387, 20:39 عصر
درود بر شما
از دوستان کمکی در مورد کلاس ها و توابع می خوام
آیا استفاده از توابع static توی وب ایراد پیش میاره یا نه ممنون می شم که علت را هم بگید
یه نمونه از توابع


public static DataSet ExecuteDataset(SqlTransaction transaction, CommandType commandType, string commandText, params SqlParameter[] commandParameters)
{
if (transaction == null) throw new ArgumentNullException("transaction");
if (transaction != null && transaction.Connection == null) throw new ArgumentException("The transaction was rollbacked or commited, please provide an open transaction.", "transaction");
SqlCommand cmd = new SqlCommand();
bool mustCloseConnection = false;
PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters, out mustCloseConnection);
using (SqlDataAdapter da = new SqlDataAdapter(cmd))
{
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
}

salehbagheri
یک شنبه 27 بهمن 1387, 22:02 عصر
آیا استفاده از توابع static توی وب ایراد پیش میاره یا نه ممنون می شم که علت را هم بگید

به نظر من بدون استفاده از توابع استاتيك، در ASP.NET اصلا نميتونيد يه سايت واقعي طراحي كنيد! و توابع استاتيك جزء جدانشدني كدنويسي در ASP.NET هست!

hesam_a110
یک شنبه 27 بهمن 1387, 22:55 عصر
درود بر شما
راستش این سوال و به این علت طرح کردم که در یکی از پروژه ها از یک آرایه استاتیک استفاده می کردم که با کار کردن دو کاربر همزمان با آن صفحه ای که داخل اون از این آرایه استفاده کرده بودم دچار مشکل می شد و آن اطلاعات برای هر دو بود بیشترین مسئله بنده این بوده که آیا در توابع هم می تواند دچار چنین مشکلی بشه یا نه؟
ممنون از شما و دوستان
پیروز و نیک باشید

Rezaoli
دوشنبه 28 بهمن 1387, 00:52 صبح
ببین، متغییر static با کلاس استاتیک و متد استاتیک فرق داره ها! کلاس های استاتیک کلاس هایی هستن که از اونها instantiate نمیشه، یعنی new نمیکنیم. توابع استاتیک، تابع های استاتیک هم بیشتر در مورد extension method ها و داخل کلاس های استاتیک استفاده می شه. اما.....
مشکلی که برات پیش اومده سر متغیرهای استاتیک هست که توی وب برای همه اشکال ایجاد میکنه. حالا این استاتیک وریبل چی هست...
static variable یک محل از حافظهRam روی server هست که در طول پروژه همه به صورت مشترک از اون استفاده می کنن. با باز شدن session برای هر کاربر، فضایی برای متغیرهای اون کاربر اختصاص داده میشه، اما برای متغیر های استایک، از یک فضای واحد و مشترک بین همه استفاده میشه. به خاطر همین هم اگر یه متغیر استاتیک بگیری و توش یه چیزی بریزی، user بعدی میاد مال خودشو set کنه اما چون static هست، مقدار قبلیش که مال تو بوده میپره.
نتیجه این که از کلاس و متد استاتیک استفاده کن، طوری نمیشه. اما متغیر استاتیک توی وب باید با احتیاط و جایی که لازمه با توجه به مفهوم متغیر استاتیک تعریف بشه.

Behrouz_Rad
دوشنبه 28 بهمن 1387, 08:57 صبح
دوستمون در پست قبلی بسیار خوب توضیح دادند. فقط بنده مثالی در مورد جمله ی آخرشون بگم.
مثلا یک RegEx قابلیت کامپایل شدن رو داره. مسلمه که این کامپایل شدن برای همه ی کاربران یکسانه و اون RegEx نیاز نداره که به ازای هر کاربر به شکل متفاوتی کامپایل بشه. در نتیجه میشه RegEx رو به صورت static readonly تعریف کنی.

موفق باشید.

hesam_a110
دوشنبه 28 بهمن 1387, 15:18 عصر
درود بر شما
از دوستانی که جواب دادند و راهنمایی کردن سپاس گذارم ممنون از جواب هاتون
پیروز و نیک باشید