سفارش تبلیغ
صبا ویژن

91/2/26
11:17 صبح

نکته های

بدست داوود طالبی اذر در دسته

مقالات سی شارپ » نحوه ی ایجاد آرایه های پویا

 

چگونه یک آرایه ی پویا در سی شارپ تعریف کنیم؟

آرایه ی پویا چیست و چه کاربردی دارد؟


 برای دریافت نسخه ی PDF این مقاله اینجا کلیک کنید.

آرایه ی پویا در واقع همان اشاره گر می باشد که قبلا در زبان سی جای داشت و بر قدرت این زبان افزوده بود و اینبار بصورت خیلی ساده تر و بدور از دردسر های قبلی در زبان سی شارپ پیاده سازی شده. این نوع آرایه ها بر خلاف آرایه های کلاسیک این توانایی را دارند تا در زمان اجرا طول متغییری داشته باشند و کاربرد آن در مواقعی است که تعداد عناصر آرایه برای ما مشخص نباشد.

 

 

string[] myArray = new string[] {"Hello World"};

 

آرایه بالا فقط شامل یک عنصر است که در زمان اجرا فقط اجازه ی تغییر محتوای آرایه را داریم و نمیتوان اندازه ی آرایه را تغییر داد در زبان های قبلی در این موارد میبایست یک اشاره گر تعریف میکردیم و از ساختار اشاره گر ها استفاده میکردیم که کار نسبتا پیچیده و مشکل سازی بود.

 

برای خواندن متن کامل به ادامه ی مطلب مراجعه کنید.



خوشبختانه طراحان سی شارپ قابلیت جالبی در این زبان پیاده سازی کرده اند که استفاده از آرایه با طول متغییر را در زبان سی شارپ بسیار ساده و لذت بخش نموده یادآور میشوم برنامه نویسان ویژوال بیسیک از دستور  Redim برای تغییر طول آرایه  ، در زمان اجرا استفاده میکردند .

 

حال به چگونگی تعریف یک آرایه پویا در سی شارپ میپردازیم:
برای استفاده از این قابلیت باید کلاس ArrayList را در فضای نام System.Collections  فراخوانی کنیم پس از آن در دستور زیر برای تعریف آرایه استفاده میکنیم.

 

 

 

ArrayList myList = new ArrayList();
myList.add("hello");
myList.add("world");

 

از این پس از با استفاده از متد add میتوان به عناصر آرایه اضافه کرد که اندیس آرایه بصورت خودکار افزایش پیدا میکند.
همچنین از متد RemoveAt و شماره ی اندیس عنصری که قصد حذف آن را داریم میتوان عناصر آرایه را حذف کرد.


91/2/26
11:11 صبح

نکته های سی شارپ

بدست داوود طالبی اذر در دسته

مقالات سی شارپ » کار با رشته ها در سی شارپ چند تابع ضروری

 

 

رشته در زبان های برنامه نویسی به دنباله ای از کاراکتر ها گفته می شود که برنامه نویس برای نگداری اسامی، داده ها و ... در حافظه از آن استفاده میکند که در نهایت در زمان لازم میتواند استفاده ی مطلوب از آن را داشته باشد مثلا آن را در یک فایل و یا در جدولی از بانک اطلاعاتی ذخیره کند.

 

تـــــــعریف  رشــــــته در سی شــــارپ

برای تعریف رشته در سی شارپ کفیست از کلمه ی کلیدی string و سپس یک نام معتبر برای رشته استفاده کنید، مثال:

string str1;

 

برای خواندن متن کامل به ادامه ی مطلب مراجعه کنید.

 

 

بعد از اجرای دستور بالا مکانی در حافظه برای متغییر str1 در نظر گرفته می شود که میتوان یک رشته شامل دنباله ای از کاراکتر ها را در خود نگهدارد. در دستور بالا میتوانستیم مستقیما به متغییر str1 مقدار اولیه بدهیم، مثال:

string str1="www.cSharpDeveloper.ir";

 

فرض میکنیم دو رشته داریم و میخواهیم آن ها را به هم متصل کنیم برای اینکار از عملگر + استفاده میکنیم، مثال:

string str1="Meysam ";

string str2="Valiolahi";

strign str3=str1 + str2;


 

روش بالا برای رشته های با طول زیاد چندان جالب نیست در دات نت کلاس بهتری برای اینکار وجود دارد به مثال زیر توجه کنید.

StringBuilder strb = new StringBuilder();
strb.Append("Meysam ");
strb.Append("Valiolahi");

string str3 = strb.ToString();

هرگاه نیاز داشته باشیم مسیر یک فایل را در یک رشته نگهداریم باید از کاراکتر های راهنما استفاده کنیم با اجرا مثال زیر با خطا مواجع می شوید:
string str1="c:\windows\Notepad.exe";

برای حل این مشکل کافی است از کاراکتر \ کمک بگیریم و یا با استفاده از @ رشته را به صورت ایستا تبدیل کنیم، مثال:

string str1="c:\\windows\\Notepad.exe";  

تــــــابع جداکننــده

برای جدا سازی یک رشته بصورت زیر عمل میکنیم:

string str2=str1.Substring(0, 6);

91/2/26
11:9 صبح

توضیحاتی در رابطه با سی شارپ

بدست داوود طالبی اذر در دسته

مقالات سی شارپ » اندازه گیری حافضه ی مصرف شده توسط یک برنامه ی دات نت

 

 

برای محاسبه ی حافظه ی مصرف شده به وسیله ی برنامه های .NET دو راه وجود دارد، روش اول استفاده از GC و روش دوم استفاده از System.Diagnostics می باشد.

 

 

بازیــــابـی حافظـــه ی مصـرف شـده با استـفاده از کـلاس GC :

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

 

long memAvailable = GC.GetTotalMemory(false);
Console.WriteLine(“Before allocations: {0:N0}”, memAvailable);

int allocSizeObj = 40000000;
byte[] bigArrayObj = new byte[allocSizeObj];

memAvailable= GC.GetTotalMemory(false);
Console.WriteLine(“After allocations: {0:N0}”, memAvailable);

خروجی کد بالا:

 

Before allocations: 651,064
After allocations: 40,690,080

برای خواندن متن کامل بر روی ادامه ی مطلب کلیک کنید.

 

بــازیابـی حــــافـظـه ی مــصرف شـده بـا اسـتــفاده از System.Diagnostics :

همجنین با استفاده از کلاس System.Diagnostics میتوانید عملیات بالا از OS درخواست و گزارش تهیه کنید.

 

Process procObj = Process.GetCurrentProcess();
Console.WriteLine(“Process Info: “+Environment.NewLine+
“App"s Private Memory Size : {0:N0}”+Environment.NewLine +
“App"s Virtual Memory Size : {1:N0}” + Environment.NewLine +
“App"s Working Set Size: {2:N0}” + Environment.NewLine +
“App"s Paged Memory Size: {3:N0}” + Environment.NewLine +
“App"s Paged System Memory Size: {4:N0}” + Environment.NewLine +
“App"s Non-paged System Memory Size: {5:N0}” + Environment.NewLine,
procObj.PrivateMemorySize64,
procObj.VirtualMemorySize64,
procObj.WorkingSet64,
procObj.PagedMemorySize64,
procObj.PagedSystemMemorySize64,
procObj.NonpagedSystemMemorySize64 );

خروجی :

Private Memory Size: 75,935,744
Virtual Memory Size: 590,348,288
Working Set Size: 29,364,224
Paged Memory Size: 75,935,744
Paged System Memory Size: 317,152
Non-paged System Memory Size: 37,388

این اعداد مستقیما مشهود نیستند برای درک بهتر میتواندی به یک کتاب خوب در باره ی سیستم عامل مراجعه کنید، به بخش حافظه ی مجازی چگونه کار میکند مراجعه کنید.


91/2/26
11:6 صبح

مقالات سی شار÷ دات نت

بدست داوود طالبی اذر در دسته

مقالات سی شارپ » ارسال ایمیل با استفاده از SmtpClient در سی شارپ

 

 

کلاس SmtpClient که در فضای نام System.Net.Mail قرار دارد امکان ارسال ایمیل را در هر جایی از طریق پروتکل SMTP فراهم میکند.

 

 

برای ارسال یک متن ساده بصورت ایمیل یک نمونه از شی SmtpClientرا با مشخصات هاست مقدار دهی میکنیم و در نهایت عملیات ارسال را فراخوانی می کنیم.

برای خواندن متن کامل به ادامه ی مطلب مراجعه کنید.

 

بعد از الحاق فضای نام System.Net.Mail به برنامه از کد های استفاده و در نهایت اقدام به ارسال ایمیل کنید.

مقدارد دهی هاست:

SmtpClient clientObj = new SmtpClient();
clientObj.Host = "mail.myisp.net";
clientObj.Send ("from@mydomain.com", "to@adomain.com", "subjecttext", "bodytext");

 

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

 

SmtpClient clientObj = new SmtpClient();
clientObj.Host = "mail.myisp.net";
MailMessage mmObj = new MailMessage();
mmObj.Sender = new MailAddress ("kay@domain.com", "Kay");
mmObj.From = new MailAddress ("kay@domain.com", "Kay");
mmObj.To.Add (new MailAddress ("bob@domain.com", "Bob"));
mmObj.CC.Add (new MailAddress ("dan@domain.com", "Dan"));
mmObj.Subject = "Hello!";
mmObj.Body = "Hi. Here"s my photo!";
mmObj.IsBodyHtml = false;
mmObj.Priority = MailPriority.High;
Attachment a = new Attachment ("photoofme.jpg",
System.Net.Mime.MediaTypeNames.Image.Jpeg);
mmObj.Attachments.Add (a);
clientObj.Send (mmObj);


91/2/26
11:1 صبح

مطالبی درباره سی شارپ

بدست داوود طالبی اذر در دسته

 

مقالات سی شارپ » باور های نادرست در باره ی پنجره های Splash

 

 

splash windows ها پنجره هایی هستند که در برنامه های مختلف و در ابتدایی ترین حالت در زمان بارگذاری ویندوز مشاهده میکنیم، قبل از اینکه به سراغ موضوع اصلی بریم به کلمه ی بارگذاری در خط قبل توجه کنید.

 

"لفظ splash  در مورد بارگذار ویندوز کمی غیر فنی می باشد و بیشتر جنبه ی معرفی دارد."

 

تا بحال از نرم افزار فتوشاپ استفاده کرده اید؟ قبل از باز شدن برنامه ی اضلی بسته به قدرت سیستمی که از آن استفاده میکنید با پنجره ای که حاوی یک تصویر و تعدادی نوشته است واجه میشویم گاهی اوقات نیز نوشته ها در حال تغییر کردن هستند، آیا این عملیات تنها جنبه ی زیبایی دارد؟ آیا انتظار کاربر برای دیدن این صقحه فقط و فقط برای معرفی نرم افزار و شخص برنامه نویس است؟؟؟

 

برای پاسخ به این سوالات توصیه می کنم ابتدا ویندوز را مجددا راه اندازی کنید و اینبار با دید بهتری به این فرایند نگاه کنید، چرا از زمان راه اندازی تا ورود به ویندوز کاربر باید با صفحه ی زیر مواجه شود؟

 

 

خوب مثل اینکه شرکت سازنده ی ویندوز زمان مناسبی برای معرفی محصولش پیدا کرده اینطور نیست؟ به هیچ وجه! در زمانی که کاربر منتظر ورود به ویندوز است و صفحه ی کسل کننده ی بالا را مشاهده میکند ویندوز در حال کارهای خاصی است و شک نکنید اگر امکان ورود مستقیم به ویندوز میسر بود به هیچ وجه با این صفحه مواجه نمی شدید،.

splash windows ها به بهانه های مختلفی ممکن است در یک برنامه گنجانده شوند، در شایع ترین حالت برنامه نویسان آماتور برای معرفی تیم برنامه نویسی یا معرفی محصول از این پنجره ها استفاده میکندد در صورتی که دلیل اضلی splash ها چیز دیگریست، تصور کنید در یک برنامه ی دیکشنری برای هر بار اجرای برنامه با یک پنجره  یا تصویر مواجه شوید که زمانی هرچند کوتاه را صرف کند این کار در دراز مدت از محبوبیت نرم افزار شما می کاهد زیرا کاربر انتظار دارد در مواقع ضروری برنامه سریع اجرا شود و بتواند نیاز خود را برطرف کند.

سیاست اصلی استفاده از splash ویندوز ها در مواقعیست که برای ورود به نرم افزار به اجرای یکسری از دستوالعمل های دیگر احتیاج داشته باشیم مثلا زمانی که برنامه اجرا شد اطلاعات یک پایگاه داده در مکانی از برنامه قابل مشاهده باشد اگر این کار را بدون splash انجام دهیم در مواقعی که حجم داده ها زیاد باشد و سیستم کاربر از قدرت بالایی برخوردار نباشد این کار از قابلیت اظمینان برنامه و محبوبیت آن می کاهد چون برنامه تا اتمام عملیات بانکی قابل استفاده نیست (البته این مشکل نیز راه حل های مربوط به خور را دارد) در چنین مواقعی splash ویندوز ها برای فرایند های بگراند مورد استفاده قرار میگیردو

 

توصیه می شود تا حد امکان دسترسی سریع بع برنامه را محیا کنید و از splash تا حد ممکن خودداری کنید.

 

 


<      1   2   3      >