C# Programming Guide
193 subscribers
113 photos
9 videos
14 files
102 links
سلام دوستان در این کانال نکاتی در مورد مسائل پیشرفته در سی شارپ ارائه میشه که مربوط به بیش از 15 سال تجربه ی کاری من هست.
ممنون از اینکه دنبال میکنید.
اگر نکات خاصی به ذهنتون رسید با ادمین در میون بذارید
تماس با ادمین:
@Ali_Visual_Studio
Download Telegram
تفاوت EF Core و EF در مالتی پلتفرم بودنش هست و EF فقط برای Sql و ویندوز طراحی شده ولی EF Core برای انواع دیتابیس ها بکار میره و کاملا مالتی پلتفرم ساخته شده علاوه بر اون قابلیت استفاده در سیستم عامل های دیگه جهت استفاده ی سرور رو داره.
من هر دوش رو تست کردم و واقعا Entity framework و core تحولی بزرگ در دنیای دیتابیس برای برنامه نویسان سی شارپ بودن.براحتی میتونید از طریق Linq در سی شارپ کوئری در دیتابیس بزنید.
همراه با بسته شدن تلگرام تمامی سرویس های مایکروسافت و سایت هایی که به سرویس های مایکروسافت متصل بودند فیلتر شدند. سایت microsoft.com و stackoverflow.com و github.com و nuget و ... البته این شاید هنوز برای همه ی ISP ها اعمال نشده باشه.
This media is not supported in your browser
VIEW IN TELEGRAM
نسخه ی جدید ویژوال استادیو 15.7 و تغییرات در بخش XAML زامارین
این سایت هایی که میگن همراه زامارین باید virtual box هم نصب کنید دقیقا شمارو توی موقعیتی قرار میدن که کلی وقتتون گرفته میشه تا مشکلی که بعدش بوجود میاد رو حل کنید.
بعد از نصب ویژوال استادیو هی چیز دیگه ای نیاز به نصب نیست.ویژوال استادیو حتی emulator و sdk های اندروید رو خودش نصب میکنه و شما نیازی نیست کاری انجام بدید، بعد از نصب موفق همه چیز روبراست برای برنامه نویسی مگر اینکه استثنایی رخ بده.
لیست های Lazy لیست هایی هستند که مواقعی به کمک شما میان که آیتم های زیادی داشته باشید ولی نمیخواهید اون آیتم ها در لحظه توی حافظه ایجاد بشن در عوضش میخواید هر وقت بهش احتیاج پیدا کردید در حافظه ایجاد بشن.Lazy ها در دیتابیس ها هم کاربرد دارن ولی کاربردشان وقتی هست که شما میدونید سریع به جواب میرسید، چون توی بحث دیتابیس Lazy ها مشکلی که ایجاد میکنن اینه که هر بار یک آیتم بخوان از لیست کوئری دریافت کنن باید مجدد برن و کوئری بزنن و دیتا رو به شما برگردونن پس بسیار کند عمل میکنن.
اما در حافظه اینطور نیست و عمل و سرعت بسیار بالایی در کار باهاشون میتونید پیدا کنید در واقع این هنر شماست که بدونید چه وقتی به Lazy ها نیاز دارید.

مثال:
Lazy<Orders> _orders = new Lazy<Orders> () => new Orders(100));

همونطور که میدونید Lambada ها در لحظه اجرا نمیشن و در زمانی که فانکشن صدا زده بشه اونا اجرا میشن بنابر این کد زیر در لحظه ای اجرا میشه که شما لیست رو foreach کنید یا از طریق linq فراخونی کنید:
() => new Orders(100)

توضیحات و مثال های بیشتر رو در سایت مایکروسافت بخونید:

https://docs.microsoft.com/en-us/dotnet/framework/performance/lazy-initialization
ویژوال استادیو 2017 رو سعی کنید افلاین نصب کنید و آپدیت، توی سایت مایکروسافت روشی هست که به شما آموزش میده چطوری فایل ستاپ آفلاین از ویژوال استادیو بسازید، اگر کل پکیج های ویژوال استادیو آفلاین رو بخواید حدود 40 گیگ میشه.اما اگر بخواید آنلاین نصب کنید باید فیلتر شکن روشن کنید چون یه سری فایل ها رو از اینتل و گوگل دانلود میکنه برای همین موقع نصب با خطا مواجه خواهید شد و دردسر زیادی برای نصب آپدیت های سنگین میکشید.گاهی وقتا هم از طرف خود ایران مسائلی به وجود میاد که باعث کندی اینترنت میشه و ستاپ هنگ میکنه و چیزی رو دانلود نمی کنه و باید ساعت ها صبر کنید تا به جایی برسه که از اول مراحل نصب رو انجام بدید.بنابراین من نصب و آپدیت آفلاین رو پیشنهاد میکنم.

https://docs.microsoft.com/en-us/visualstudio/install/install-vs-inconsistent-quality-network
C# Programming Guide
Photo
سلام، دوستان اگر مشهد هستید و دوست دارید سی شارپ یاد بگیرید من قراره آموزش سی شارپ رو از صفر + WPF توی آموزشگاه شرکت خودمون آموزش بدم و مدرسش هم خودم هستم، اگر مشتاق یادگیری در این زمینه هستید به سایت https://edu.atitec.ir مراجعه و ثبت نام کنید، همچنین اگر در زمینه های دیگه ای میخواید آموزش ببینید همکاران من در خدمت شما هستند.
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite))
{

}
C# Programming Guide
using (FileStream fileStream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite, FileShare.ReadWrite)) { }
نوع FileShare به شما اجازه میده تا چندین کاربر همزمان بتونن از توی استریم read و write کنن، این امر برای دانلود فایل ها سمت سرور انجام میشه برای همین قابلیت هایی از جمله چند اتصال همزمان و چند کلاینت همزمان رو بوجود میاره و اجازه میده تا هزاران کاربر همزمان بتونن از یک فایل استریم اطلاعات دریافت کنن، باید مراقب بخش Write باشید چون این قابلیت اجازه میده تا چند کلاینت همزمان بتونن توی فایل اطلاعات write کنن.
کد زیر در Linq اولین آیتم از یک لیست رو برای شما بر میگردونه که باید حواستون باشه اگر لیست خالی باشه با خطا مواجه میشید:


try
{
List<string> list = new List<string>();
var first = list.First();
}
catch (Exception ex)
{

}


برای رفع این مشکل دو راه وجود داره، اول اینکه یک مقدار پیشفرض برای وجود نداشتن آیتم در لیست هاتون بذارید:


var first = list.DefaultIfEmpty(null).First();

الان در صورتی که آیتمی توی لیست نباشه مقدار null بر میگردونه و به exception نمیخوره. یا اینکه از متد FirstOrDefault استفاده کنید:


var first = list.FirstOrDefault();


اینجا اگر از DefaultIfEmpty استفاده نکرده باشید به طور پیشفرض اگر ایتمی در لیست نباشه null برمیگردونه، Linq بسیار مهم و پرکاربرده و من خودم علاوه بر لیست های توی حافظه حتی در عملیات دیتابیسی هم بسیار ازش استفاده میکنم.

مثلا اگر شما از تابع Max استفاده کنید برای اینکه بزرگترین رو پیدا کنید اگر آیتمی توی لیست نباشه بازم به خطا میخورید که آیتمی توی لیست نبود که بزرگترینش رو بهتون بر گردونه برای همین مجدد DefaultIfEmpty قبل از صدا زدن Max میتونه بهتون کمک کنه تا یک مقدار پیشفرض درصورت خالی بودن لیست بهتون برگردونه. علت این امر اینه که لزوماً struct ها در سی شارپ nullable نیستند و حتما باید یک مقدار پیشفرض داشته باشند.
کاربرد DefaultIfEmpty معمولا وقتی هست که شما از where ها و شرط ها قبل از max گرفتن یا آیتم گرفتن استفاده کنید.
C# Programming Guide
کد زیر در Linq اولین آیتم از یک لیست رو برای شما بر میگردونه که باید حواستون باشه اگر لیست خالی باشه با خطا مواجه میشید: try { List<string> list = new List<string>(); var first = list.First(); …
نکته:
اکثر توابع Linq به طور پیشفرض where در خودشون دارن و نیازی نیست لزوما از Where استفاده کنید.
مثلا اگر میخواهید تعداد آیتم هایی که اسمشون ali هست رو بگیرید.
بجای اینکه بنویسید:


var first = list.Where(x => x.Name == "ali").Count();


میتونید مستقیم بنویسید:


var first = list.Count(x => x.Name == "ali");


برای FirstOrDefault و ... هم همینطور...
آیا موافق هستید که مسائل مبتدی از سی شارپ رو هم در کانال قرار بدم؟
anonymous poll

بلی – 19
👍👍👍👍👍👍👍 79%

خیر – 5
👍👍 21%

👥 24 people voted so far.
ربات آپلود منیجر آگرین آماده خدمات رسانی به کاربران دانلود منیجر آگرین می باشد. برای ثبت نام و استفاده در ربات @AgrinDM_bot عضو شوید.1 گیگابایت حجم رایگان برای کاربرانی که ثبت نام میکنند در نظر گرفتیم.کافیست لینک های خود را در ربات فروارد کنید تا لینک مستقیم برای شما ساخته شود.

پ.ن: این ربات و خود دانلود منیجر آگرین رو خودم نوشتم با سی شارپ نسخه اندرویدش هم با Xamarin Forms نوشته شده که نسخه ی آزمایشی رو میتونید از کانال @AgrinDM دانلود و نصب کنید.
هنگام آدرس دهی فایل ها و پوشه ها هیچوقت از کاراکتر های / یا \ به طور مستقیم استفاده نکنید.


var path = "d:\\test\\file.rar";


برنامه نویسانی Cross Platform همیشه مراقب کد های خود برای تمامی سیستم عامل ها و انعطاف پذیری کد ها هستند بنابراین دقت لازم رو داشته باشید که در سیستم عامل لینوکس و اندروید به جای \ از کاراکتر / برای آدرس دهی مسیر ها استفاده میشه مثلا: /storage/system بنابراین همیشه سعی کنید از کلاس و تابع Path.Combine برای اتصال دو مسیر یا پوشه به هم استفاده کنید.

مثلا:


var path1 = "storage";
var path2 = "system";
var path3 = "file.rar";
var address = System.IO.Path.Combine(path1, path2, path3);


خروجی در ویندوز برابر با آدرس زیر خواهد بود:
storage\system\file.rar

خروجی در اندروید:
storage/system/file.rar

بنابراین کد شما در همه ی سیستم عامل ها کار خواهد کرد و نیاز به تغییر جزئیات نخواهید داشت.
C# Programming Guide
Photo
پروژه ی Uno یکی دیگه از بزرگترین پروژه های گرفتن خروجی از سی شارپ و Xaml برای سیستم عامل های اندروید + IOS + UWP و صفحات html هست، یعنی شما میتونید با کد سی شارپ و xaml یک وبسایت با خروجی html و css و javascript بسازید.پروژشو تست کردم واقعا عالی و کاربردیه.
بیشتر قسمت خروجی سابت گرفتنش نظرم رو جلب کرده https://platform.uno/

یه تست کامل خروجی xaml به جاوا اسکریپت و وب به صورت کاملا Runtime و آنلاین:

https://platform.uno/Playground/index.html
با یادگیری برنامه نویسی Microsoft.SDK شما قادر خواهید بود با یک پروژه برای چندین نوع دات نت فرمورک پروژتونو خروجی بگیرید، مثلا یک کامپوننت بسازید هم برای نت 3.5 و هم برای نت 4.5 همزمان خروجی بگیرید
C# Programming Guide
Photo
زبان نشانه گذاری XAML یک زبان نشانه گذاری در رده های HTML و XML و TEX می باشد که توسط مایکروسافت توسعه و عرضه شده، این زبان امروزه در تولید اپلیکیشن های موبایل و نرم افزار های دسکتاپ و پیاده سازی صفحات وب کاربرد دارد، یکی از زبان های قدرمتند برنامه نویسی که از XAML در ساختار خود استفاده میکند WPF می باشد.
چرا ما باید به سراغ WPF برویم؟
ما باید در نظر داشته باشیم که امروزه نیاز های بازار برنامه نویسی در چه اپلیکیشن ها و سیستم عامل ها و زبان های برنامه نویسی می باشد، برای مثال، آیا بازار به سمت موبایل پیش میرود؟ یا صفحات وب؟ یا اپلیکیشن های دسکتاپ یا بازی سازی؟ اگر ما زبانی را انتخاب کنیم که در آینده بر اساس تغییر نیاز های بازار کمکی به ما نمی کند چقدر وقتمان گرفته میشود تا زبان جدیدی را یاد بگیریم و شروع به کار کنیم؟
زبان XAML یک زبان نشانه گذاری بسیار قدرتمند و مرتب می باشد که با IDE قدرتمند Visual Studio محبوبیت و قدرت آن چندین برابر می شود.شما با XAML و زبان سی شارپ میتوانید برای تمامی سیستم عامل ها و در تمامی ابعاد و پلتفرم ها بدون محدودیت برنامه نویسی کنید، نرم افزار بسازید، بازی بسازید، وبسایت بسازید، یعنی هم نگران آینده ی زبانی که انتخاب کردید نیستید و هم با یک تیر چندین نشان زده اید.