This media is not supported in your browser
VIEW IN TELEGRAM
نسخه ی جدید ویژوال استادیو 15.7 و تغییرات در بخش XAML زامارین
این سایت هایی که میگن همراه زامارین باید virtual box هم نصب کنید دقیقا شمارو توی موقعیتی قرار میدن که کلی وقتتون گرفته میشه تا مشکلی که بعدش بوجود میاد رو حل کنید.
بعد از نصب ویژوال استادیو هی چیز دیگه ای نیاز به نصب نیست.ویژوال استادیو حتی emulator و sdk های اندروید رو خودش نصب میکنه و شما نیازی نیست کاری انجام بدید، بعد از نصب موفق همه چیز روبراست برای برنامه نویسی مگر اینکه استثنایی رخ بده.
بعد از نصب ویژوال استادیو هی چیز دیگه ای نیاز به نصب نیست.ویژوال استادیو حتی 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
اما در حافظه اینطور نیست و عمل و سرعت بسیار بالایی در کار باهاشون میتونید پیدا کنید در واقع این هنر شماست که بدونید چه وقتی به 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
Docs
Lazy Initialization - .NET Framework
Explore lazy initialization in .NET, a performance improvement that means an object creation is deferred until the object is first used.
ویژوال استادیو 2017 رو سعی کنید افلاین نصب کنید و آپدیت، توی سایت مایکروسافت روشی هست که به شما آموزش میده چطوری فایل ستاپ آفلاین از ویژوال استادیو بسازید، اگر کل پکیج های ویژوال استادیو آفلاین رو بخواید حدود 40 گیگ میشه.اما اگر بخواید آنلاین نصب کنید باید فیلتر شکن روشن کنید چون یه سری فایل ها رو از اینتل و گوگل دانلود میکنه برای همین موقع نصب با خطا مواجه خواهید شد و دردسر زیادی برای نصب آپدیت های سنگین میکشید.گاهی وقتا هم از طرف خود ایران مسائلی به وجود میاد که باعث کندی اینترنت میشه و ستاپ هنگ میکنه و چیزی رو دانلود نمی کنه و باید ساعت ها صبر کنید تا به جایی برسه که از اول مراحل نصب رو انجام بدید.بنابراین من نصب و آپدیت آفلاین رو پیشنهاد میکنم.
https://docs.microsoft.com/en-us/visualstudio/install/install-vs-inconsistent-quality-network
https://docs.microsoft.com/en-us/visualstudio/install/install-vs-inconsistent-quality-network
Docs
Create an offline installation - Visual Studio
Learn how to install Visual Studio offline when you have an unreliable internet connection or low bandwidth.
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 اولین آیتم از یک لیست رو برای شما بر میگردونه که باید حواستون باشه اگر لیست خالی باشه با خطا مواجه میشید:
برای رفع این مشکل دو راه وجود داره، اول اینکه یک مقدار پیشفرض برای وجود نداشتن آیتم در لیست هاتون بذارید:
الان در صورتی که آیتمی توی لیست نباشه مقدار null بر میگردونه و به exception نمیخوره. یا اینکه از متد FirstOrDefault استفاده کنید:
اینجا اگر از DefaultIfEmpty استفاده نکرده باشید به طور پیشفرض اگر ایتمی در لیست نباشه null برمیگردونه، Linq بسیار مهم و پرکاربرده و من خودم علاوه بر لیست های توی حافظه حتی در عملیات دیتابیسی هم بسیار ازش استفاده میکنم.
مثلا اگر شما از تابع Max استفاده کنید برای اینکه بزرگترین رو پیدا کنید اگر آیتمی توی لیست نباشه بازم به خطا میخورید که آیتمی توی لیست نبود که بزرگترینش رو بهتون بر گردونه برای همین مجدد DefaultIfEmpty قبل از صدا زدن Max میتونه بهتون کمک کنه تا یک مقدار پیشفرض درصورت خالی بودن لیست بهتون برگردونه. علت این امر اینه که لزوماً struct ها در سی شارپ nullable نیستند و حتما باید یک مقدار پیشفرض داشته باشند.
کاربرد DefaultIfEmpty معمولا وقتی هست که شما از where ها و شرط ها قبل از max گرفتن یا آیتم گرفتن استفاده کنید.
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 هست رو بگیرید.
بجای اینکه بنویسید:
میتونید مستقیم بنویسید:
برای FirstOrDefault و ... هم همینطور...
اکثر توابع 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.
anonymous poll
بلی – 19
👍👍👍👍👍👍👍 79%
خیر – 5
👍👍 21%
👥 24 people voted so far.
ربات آپلود منیجر آگرین آماده خدمات رسانی به کاربران دانلود منیجر آگرین می باشد. برای ثبت نام و استفاده در ربات @AgrinDM_bot عضو شوید.1 گیگابایت حجم رایگان برای کاربرانی که ثبت نام میکنند در نظر گرفتیم.کافیست لینک های خود را در ربات فروارد کنید تا لینک مستقیم برای شما ساخته شود.
پ.ن: این ربات و خود دانلود منیجر آگرین رو خودم نوشتم با سی شارپ نسخه اندرویدش هم با Xamarin Forms نوشته شده که نسخه ی آزمایشی رو میتونید از کانال @AgrinDM دانلود و نصب کنید.
پ.ن: این ربات و خود دانلود منیجر آگرین رو خودم نوشتم با سی شارپ نسخه اندرویدش هم با Xamarin Forms نوشته شده که نسخه ی آزمایشی رو میتونید از کانال @AgrinDM دانلود و نصب کنید.
هنگام آدرس دهی فایل ها و پوشه ها هیچوقت از کاراکتر های / یا \ به طور مستقیم استفاده نکنید.
برنامه نویسانی Cross Platform همیشه مراقب کد های خود برای تمامی سیستم عامل ها و انعطاف پذیری کد ها هستند بنابراین دقت لازم رو داشته باشید که در سیستم عامل لینوکس و اندروید به جای \ از کاراکتر / برای آدرس دهی مسیر ها استفاده میشه مثلا: /storage/system بنابراین همیشه سعی کنید از کلاس و تابع Path.Combine برای اتصال دو مسیر یا پوشه به هم استفاده کنید.
مثلا:
خروجی در ویندوز برابر با آدرس زیر خواهد بود:
storage\system\file.rar
خروجی در اندروید:
storage/system/file.rar
بنابراین کد شما در همه ی سیستم عامل ها کار خواهد کرد و نیاز به تغییر جزئیات نخواهید داشت.
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
بیشتر قسمت خروجی سابت گرفتنش نظرم رو جلب کرده https://platform.uno/
یه تست کامل خروجی xaml به جاوا اسکریپت و وب به صورت کاملا Runtime و آنلاین:
https://platform.uno/Playground/index.html
C# Programming Guide
Photo
زبان نشانه گذاری XAML یک زبان نشانه گذاری در رده های HTML و XML و TEX می باشد که توسط مایکروسافت توسعه و عرضه شده، این زبان امروزه در تولید اپلیکیشن های موبایل و نرم افزار های دسکتاپ و پیاده سازی صفحات وب کاربرد دارد، یکی از زبان های قدرمتند برنامه نویسی که از XAML در ساختار خود استفاده میکند WPF می باشد.
چرا ما باید به سراغ WPF برویم؟
ما باید در نظر داشته باشیم که امروزه نیاز های بازار برنامه نویسی در چه اپلیکیشن ها و سیستم عامل ها و زبان های برنامه نویسی می باشد، برای مثال، آیا بازار به سمت موبایل پیش میرود؟ یا صفحات وب؟ یا اپلیکیشن های دسکتاپ یا بازی سازی؟ اگر ما زبانی را انتخاب کنیم که در آینده بر اساس تغییر نیاز های بازار کمکی به ما نمی کند چقدر وقتمان گرفته میشود تا زبان جدیدی را یاد بگیریم و شروع به کار کنیم؟
زبان XAML یک زبان نشانه گذاری بسیار قدرتمند و مرتب می باشد که با IDE قدرتمند Visual Studio محبوبیت و قدرت آن چندین برابر می شود.شما با XAML و زبان سی شارپ میتوانید برای تمامی سیستم عامل ها و در تمامی ابعاد و پلتفرم ها بدون محدودیت برنامه نویسی کنید، نرم افزار بسازید، بازی بسازید، وبسایت بسازید، یعنی هم نگران آینده ی زبانی که انتخاب کردید نیستید و هم با یک تیر چندین نشان زده اید.
ما باید در نظر داشته باشیم که امروزه نیاز های بازار برنامه نویسی در چه اپلیکیشن ها و سیستم عامل ها و زبان های برنامه نویسی می باشد، برای مثال، آیا بازار به سمت موبایل پیش میرود؟ یا صفحات وب؟ یا اپلیکیشن های دسکتاپ یا بازی سازی؟ اگر ما زبانی را انتخاب کنیم که در آینده بر اساس تغییر نیاز های بازار کمکی به ما نمی کند چقدر وقتمان گرفته میشود تا زبان جدیدی را یاد بگیریم و شروع به کار کنیم؟
زبان XAML یک زبان نشانه گذاری بسیار قدرتمند و مرتب می باشد که با IDE قدرتمند Visual Studio محبوبیت و قدرت آن چندین برابر می شود.شما با XAML و زبان سی شارپ میتوانید برای تمامی سیستم عامل ها و در تمامی ابعاد و پلتفرم ها بدون محدودیت برنامه نویسی کنید، نرم افزار بسازید، بازی بسازید، وبسایت بسازید، یعنی هم نگران آینده ی زبانی که انتخاب کردید نیستید و هم با یک تیر چندین نشان زده اید.
برخی پروکسی ها یا همشون روی پورت های معروف مثل 80 و 443 کار میکنن بنابراین اگر شما سروری داشته باشید که روی پورت مثلا 1562 بالا میاد، سرور شما با VPN ها کار نمی کنه و بالا نمیاد.این مشکل مربوط به سرور شما نمیشه مربوط به VPN ها میشه که این قضیه رو ساپورت نمی کنن.
یکی از قابلیت های جالبی که Task.Run داره اینه که لزوما در سیستم async await ها وقتی یک تابعی در Task اجرا میشه در یک ترد جدید اجرا نمیشه، سیستم نگاه میکنه ببینه که آیا تردی که در حال اجرا هست مشغول هست یا نه؟ اگر مشغول نیست ترد جدید نمیسازه، تابع شمارو توی همون ترد قبلی که ایجاد شده اجرا میکنه، اگر ترد مشغول باشه اجرای متد شما در ترد جدیدی اجرا خواهد شد، برای همین await کردن ترد رو مشغول نمی کنه و باعث نمیشه Task.Run یک ترد جدید بسازه، اینجاست که میشه راحت فرق دو تابع :
await Task.Delay(10000);
و
Thread.Sleep(10000);
رو فهمید در روش اول ترد شما مشغول نمی مونه بنابراین Task.Run ترد جدید نمیسازه و متد شما رو توی همون ترد قبلی اجرا میکنه در حالی که در روش دوم ترد شما مشغول میشه و Task.Run همیشه یک ترد جدید میسازه.
استفاده از task ها رو توی پروژه هاتون بسیار بسیار پیشنهاد میکنم ب جای اینکه خودتون به صورت دستی Thread بسازید.بهتره انجام اینکار رو به Task ها بسپاریم که در مواقع لزوم ترد بسازن.و سرعت و بازدهی نرم افزار رو بسیار بالا می بره
await Task.Delay(10000);
و
Thread.Sleep(10000);
رو فهمید در روش اول ترد شما مشغول نمی مونه بنابراین Task.Run ترد جدید نمیسازه و متد شما رو توی همون ترد قبلی اجرا میکنه در حالی که در روش دوم ترد شما مشغول میشه و Task.Run همیشه یک ترد جدید میسازه.
استفاده از task ها رو توی پروژه هاتون بسیار بسیار پیشنهاد میکنم ب جای اینکه خودتون به صورت دستی Thread بسازید.بهتره انجام اینکار رو به Task ها بسپاریم که در مواقع لزوم ترد بسازن.و سرعت و بازدهی نرم افزار رو بسیار بالا می بره