کانال توسعه دهندگان سی شارپ
155 subscribers
32 photos
5 videos
6 files
87 links
اینجا از تجربیاتم توی برنامه نویسی می نویسم🙌
یک عدد دات نت کار
گیت هاب من:
https://github.com/hassanrafatjoo
Download Telegram
کانال توسعه دهندگان سی شارپ
به نظرتون تفاوت if else ها و switch چیه؟ در حالت عادی همه مون میدونیم اما به نظرتون چه تفاوت های دیگه ای داره؟
در حالت عادی شاید بگیم هر دو کارشون اینه که شرایطی که ما مشخص میکنیم رو بررسی میکنن تا اینجا درسته
ولی یکم عمیق تر نگاه کنیم در switch شما همزمان نمیتونید چند تا شرط رو قرار بدید و البته باید نوع های داده Primitive یا نوع داده ای ساده قرار بدیم
ولی در if else ها شما میتونید در یک if چندین تا شرط قرار بدید

از نظر خوانایی کد سوئیچ readability یا خوانایی بهتری داره ولی خب ما همیشه نمیتونیم بر اساس سوئیچ کار کنیم خصوصا زمانی که یکم برنامه ما پیچیده تر باشه

از اون طرف if else های زیاد هم باعث افزایش مرتبه زمانی (Big O ) خواهند شد خصوصا اگر ما از ساختار
if(condition)

{

}
else if (condition)

{

}
else if (condition)

{

}
else
{

}

استفاده کنیم. جالبه بدونید به این نوع از if else ، میگن if else های نردبانی (if else ladder) که یک حالت نردبان طور داره و شرایط رو بررسی میکنه
کانال توسعه دهندگان سی شارپ
در حالت عادی شاید بگیم هر دو کارشون اینه که شرایطی که ما مشخص میکنیم رو بررسی میکنن تا اینجا درسته ولی یکم عمیق تر نگاه کنیم در switch شما همزمان نمیتونید چند تا شرط رو قرار بدید و البته باید نوع های داده Primitive یا نوع داده ای ساده قرار بدیم ولی در if…
یه چیزی که همیشه برای خودم سوال بود این بود که ما اصلا چطوری متوجه بشیم فلان جای برنامه باید از if استفاده کنیم یا else?

بستگی به کد و البته برنامه داره که دقیقا میخوایم چه چیزی رو بنویسیم

مثلا اگر شما بخواید محدوده خیلی زیادی از مقدارها رو بررسی کنید قطعا و قطعا if else گزینه بهتریه

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

و دوست دارم این رو با بقیه چه به صورت رایگان و چه غیر رایگان(😁) به اشتراک بزارم
🥰1
کانال توسعه دهندگان سی شارپ
https://git.ir/udemy-data-structures-and-algorithms-in-c-dsa/ گاهی اوقات من ندیدم دوره ها رو ولی بر اساس سرفصل هایی که می بینم از لحاظ چیزایی که قرار داده مشخص هستش که یه آموزش با کیفیت هست
اما این که ما ساختمان داده رو بلد باشیم دقیقا چه فایده ای برای ما داره

کسی توی رشته نرم افزار نیست که ساختمان داده رو پاس نکرده باشه 😁 اکثر دانشجوها از این درس متنفرن 😅

ساختمان داده یه دید کلی از نحوه کاری که میخوایم انجام بدیم رو به ما میده
1
امان از ویندوز 11 و باگ های عجیب غریبش!

روی ویندوز دو تا اکانت یکی برای خودم و یکی برای استفاده بقیه خانواده ازش

روی اکانت دوم که میای چیزی میریزی وسط صفحه یا چیزی رو تغییر میدی اعمال نمیشه و بعد از یه ری استارت یا ساین اوت باز برمیگرده به قبل😄😂
😁1
کانال توسعه دهندگان سی شارپ
امان از ویندوز 11 و باگ های عجیب غریبش! روی ویندوز دو تا اکانت یکی برای خودم و یکی برای استفاده بقیه خانواده ازش روی اکانت دوم که میای چیزی میریزی وسط صفحه یا چیزی رو تغییر میدی اعمال نمیشه و بعد از یه ری استارت یا ساین اوت باز برمیگرده به قبل😄😂
حرکت های مایکروسافت واقعا عجیبه. میگه آخرین نسخه از ویندوز حتما ویندوز ۱۰ هست بعد ۱۱ رو میده بیرون. ۱۱ هنوز پایدار نشده خبر از ۱۲ هست😂
هیچ جوره هم زیر بار نرفته که ویندوز ۱۱ برا سیستم های ضعیف نصب بشه و نیاز به سی پی یو های اینتل نسل ۸ به بالا و tpm 2 وجود‌خواهد داشت
🤣1
دوستان یک نکته ای یادتون باشه اگر از اینستالر آنلاین ویژوال استودیو استفاده می‌کنید بعد از نصب ویندوز دوباره باید ویژوال استودیو رو نصب کنید😁
لایسنس بعد از نصب ویندوز دوباره کلا از بین میره ولی چنین چیزی رو زمانی که کل پکیج شو از سایت هایی مثل سافت ۹۸ دانلود و نصب کنید من ندیدم چنین مشکلاتی پیش بیاد
👍2
همه چیز پایتون برای من عجیبه. از شی گراییش تا نحوه مدیریت منابعش. عملا خیلی جاها شما باید کارهای زیادی انجام بدی خصوصا اگه تصمیم داشته باشی از کتابخانه ها توی پروژت استفاده نکنی که دیگه به فنا میری قطعا

قربون Nuget Package Manager سی شارپ که سر راست هست همه کاراش و راحت میشه نصب کرد نه مثل pip در پایتون😂
صرف کد نوشتن نمیتونه رو تبدیل به یک برنامه نویس خوب کنه. این که در چه جایی از کدام معماری استفاده کنیم،چطوری پروژه خودمون رو لایه بندی کنیم، از چه روش هایی برای طراحی برنامه خودمون استفاده کنیم در ادامه خیلی مهم تر میشه

اشکال نداره اوایل کار که هیچ کس سنیور دولوپر نیست و زمان میبره تا ما بتونیم مسلط بشیم اما در ادامه باید بتونیم که چیزایی که گفته شد رو یاد بگیریم
👍1
تفاوت بین حالت Release و Debug چیه؟

حالت Debug همانطور که از اسمش هم مشخص هست برای اشکال زدایی نرم افزار هست و حالت Release هم خروجی هست که در نهایت استفاده میشه

اما یه تفاوت این وسط وجود داره و اون هم اینه

زمانی که ما پروژه خودمون نوع خروجی رو بر اساس Debug قرار دادیم فایل های وابسته به پروژه ( چه اون هایی که استفاده کردیم چه اون هایی که استفاده نکردیم در اینجا همشون قرار میگیرن) ، فایل های PDB، فایل های مربوط به تنظیمات نرم افزار قرار میگیره

در حالت Release هم فایل وابسته پروژه چه استفاده از ابزارهای خارجی فرض کنید EF Core باشه و... در اینجا هم خواهد بود فقط با این تفاوت که اگر کتابخانه یا ابزاری رو ما توی پروژه آورده باشیم ولی استفاده نکرده باشیم واسه این که نرم افزار بهینه سازی شده باشه حذف خواهد شد و خب این موجب سرعت بیشتر نرم افزار و همین طور کمتر شدن حجم برنامه خواهد شد
زمانی که ما از برنامه خودمون خروجی میگیریم چه در حالت دیباگ و چه در حالت ریلیز هر دو حاوی فایل هایی هستند که پسوند PDB دارن حالا باید بدونیم PDB چیه؟

در واقع pdb یا Program Database اطلاعات مربوط به اشکال زدایی(Debug) در اون قرار میگیره. زمانی که کد کامپایل میشه این فایل هم ایجاد میشه

در حالت Debug ممکنه تعداد فایل های pdb بیشتر باشه به دلیل این که توسعه دهنده یا برنامه نویس هنوز برنامه خودشو انتشار نداده و در این حالت میتونه راحت تر کدها رو بررسی کنه ولی در Release میتونه تعداد این فایل ها کمتر باشه یا کلا اصلا نباشه

این موضوع به جز ویندوز فرم در وب و کلا هر چیزی که با سی شارپ باشه هم صدق میکنه

اما یکم بخوایم بیشتر ریز بشیم چه چیزایی دقیقا میتونه در اون ذخیره بشه؟

-نام متغیرها

-نام کلاس ها و متد ها

-مقدارهای ثابت(Constant)

و خیلی چیزهای دیگه که از این ها به عنوان مثال استفاده کردم
کاربرد Any CPU چیه؟

ممکنه ما در ویژوال استودیو باشیم و در حال تولید یک برنامه مثلا ویندوزی باشیم و این رو دیده باشیم

شما میتونید مشخص کنید برنامه شما روی ویندوزهایی با معماری X86( که به 32 بیت) معروف هست اجرا بشه یا این که در معماری X64(یا همون 64بیت)

زمانی که روی Any CPU باشه یعنی روی هر دو معماری ویندوز قابلیت استفاده رو داشته باشه
تفاوت بین Build و Rebuild چیه؟ زمانی که شما در ویژوال استودیو کار میکنید و وارد بخش Build میشید گزینه های متفاوتی رو می بینید که اولین گزینه build هست و بعدی Rebuild

کار Build اینه آخرین تغییری که شما انجام دادید رو کامپایل میکنه

دو تا مزیت داره:

-سریع تر هست چون فقط جایی رو که شما میخواید کامپایل کنید اوکی میشه و نیازی نیست کل پروژه رو از دوباره کامپایل کنید

-به صورت مکرر( تکراری) میشه ازش استفاده کرد برای جاهایی که ما تغییرات کوچیکی رو دادیم در پروژ]

زمان استفاده ازش:

زمانی که فقط سریع میخواید قسمتی رو که تغییر دادید ببینید

زمانی که نیاز ندارید کل پروژه رو دوباره کامپایل کنید

و اما Reubild :

فرض کنید شما در یه سولوشن اومدید تغییراتی در نسخه دات نت ایجاد کردید و میخواید همه بخش ها دیگه باهاش سازگار باشن در این حالت نیازی نیست بخواید دونه دونه و تک تک بخواید پروژه هایی که در سولوشن هست رو کامپایل کنید
یک بار انجام میدید و همه جاهای اون تغییر میکنه

مزیت هاش:

مشکلات عدم هماهنگی نسخه ها رو برطرف میکنه

مطمئن میشیم که همه پروژه ها به درستی کامپایل شدن

زمان های استفاده ازش رو هم که در حین توضیح دادن Rebuild گفتم
کانال توسعه دهندگان سی شارپ
https://obsidian.md/download
نرم افزاری مخصوص یادداشت برداری آموزشش هم توی گوگل هست میتونید استفاده کنید

برای ویندوز و مک و لینوکس و اندروید و ios هم منتشر شده
چه تفاوتی بین استفاده از متد parseیا متدهایی مثل ToInt32 یا ToInt64 وجود داره؟

یکی از مزیت های استفاده از حالت Toint32 و یا Toint64‌اینه شما حتی اگر مقداری هم بهش ندید مقدار ۰ برمیگردونه و برنامه متوقف نمیشه

اما در متد parseاگر شما مقداری ندید بهش برنامه‌ به خطا(Exception) خواهد خورد و متوقف میشه. البته میتونید در بدنه try catch بزارید تا بتونید خطاهای احتمالی رو مدیریت کنید
string number = "";
int result = int.Parse(number); // Exception: FormatException

اینجا ما متغیری به اسم number داریم و هیچ مقداری بهش اختصاص ندادیم و نال هست پس زمانی که میخوایم تبدیلش کنیم نمیتونه این تبدیل رو انجام بده

اما اگر در حالت دوم باشه:
string number = null;
int result = Convert.ToInt32(number); // result: 0

در این حالت اگر چیزی هم به عنوان ورودی وارد نشه و نال باشه مقدار ۰ که پیش فرض برمیگردونه و برنامه ادامه پیدا میکنه
این سوال خوب شد تا ما با انواع مختلفی از استناها و خطاها آشنا بشیم که در ادامه به اون ها اشاره می‌کنم و توضیح میدم
حالت system exception که پایه هست برای استثناهای دیگه که موارد دیگه ای شامل این میشه:

NullRefrenceException
زمانی که دارید سعی می‌کنید به یه متغیری که مقدارش نال هست دسترسی پیدا کنید
IndexOutOfRangeException
زمانی که سعی کنید به یه ایندکس خارج از محدوده یه آرایه یا یه مجموعه دسترسی پیدا کنید

DividebyZeroException
تقسیم بر صفر

InvalidCastException
زمانی که بخواید یه نوع داده رو به یه نوع داده ای دیگه تبدیل کنید که این امکان پذیر نباشه
OutofMemoryException
زمانی که حافظه کافی برای اختصاص دادن به داده ها وجود نداره

FileNotFoundException
زمانی که فایل مشخص شده پیدا نشه

این ها نمونه از اکسپشن ها بودن