یہ مضمون ہر اس شخص کے لیے بہترین ہے جو اپنی .NET مہارت ثابت کرنا چاہتے ہیں!
ہیلو .NET ڈویلپرز،
اس مضمون میں، میں مختلف C# تصورات کو تلاش کروں گا جو ہر ڈویلپر کو معلوم ہونا چاہیے۔ آپ کے علم کی جانچ کرنا ہمیشہ ایک اچھا خیال ہوتا ہے اور میں نے اس مضمون میں وضاحتوں اور کوڈ کی مثالوں کے ساتھ چند مثالیں جمع کی ہیں۔
اگر آپ کوڈ کی مثالوں کو جانتے اور سمجھتے ہیں تو، آپ .NET میں کافی اچھی کارکردگی کا مظاہرہ کر رہے ہیں۔
C# میں منطق لکھتے ہوئے، ڈویلپرز کو اکثر IEnumerable<T> اور IC Collection<T> کا سامنا کرنا پڑتا ہے۔ وہ کافی ملتے جلتے نظر آسکتے ہیں لیکن وہ سافٹ ویئر ڈویلپمنٹ میں مختلف مقاصد کی تکمیل کرتے ہیں۔
ہلکا پھلکا مجموعہ رکھنا اچھا ہے جو زیادہ محفوظ ہے، کیونکہ ڈیٹا میں ہیرا پھیری کی اجازت نہیں ہے۔ کوئی بھی مجموعہ اگر آپ ڈیٹا میں ہیرا پھیری کو روکنا چاہتے ہیں تو اسے IEnumerable<T> استعمال کرنے کی سفارش کی جاتی ہے۔
IEnumerable<int> numbers = new List<int> { 1, 2, 3 }; foreach (var number in numbers) { Console.WriteLine(number); // Outputs: 1 2 3 }
IC Collection<T> توسیع کرتا ہے IEnumerable<T> تبدیلی کے طریقوں کی مدد سے ترمیم کی اجازت دیتا ہے۔ یہ انٹرفیس مجموعہ میں شماروں کو شامل کرنے، ہٹانے اور چیک کرنے کے طریقوں پر مشتمل ہے۔
ICollection<int> data = new List<int> { 12,43,556}; numbers.Add(4); Console.WriteLine(data.Count); // Outputs: 4
IC Collection<T> کی سفارش کی جاتی ہے جب جمع کرنے کے لیے الٹر طریقوں کی ضرورت ہو اور IEnumerable<T> کو پڑھنے کے آسان اعمال کے لیے۔
جب آپ ڈھیلے جوڑے اور قابل جانچ کوڈ لکھنا چاہتے ہیں تو DI ڈیزائن پیٹرن استعمال کرنے کی سفارش کی جاتی ہے، i۔ DI کے ساتھ، ڈویلپر کلاسوں کے درمیان انحصار کو آسانی سے منظم کر سکتے ہیں۔
.NET Core میں DI کے لیے بلٹ ان سپورٹ ہے، جو اسے لاگو کرنا آسان بناتا ہے۔
ایک ڈویلپر DI کو C# میں کیسے نافذ کر سکتا ہے
public void ConfigureServices(IServiceCollection services) { // Register a transient service services.AddTransient<IMyService, MyService>(); }
public class MyController : Controller { private readonly IMyService _myService; public MyController(IMyService myService) { _myService = myService; } public IActionResult Index() { var data = _myService.GetData(); return View(data); } }
جب ایک ڈویلپر خدمات کی تخلیق کو ڈیکپل کرتا ہے تو ایک کوڈ زیادہ برقرار اور قابل جانچ ہوتا ہے۔
C# میں، ref اور out کو حوالہ کے لحاظ سے پیرامیٹرز کو منتقل کرنے کے لیے استعمال کیا جاتا ہے، لیکن ان کی الگ خصوصیات ہیں۔
public void UpdateValue(ref int number) { number += 10; } int myNumber = 5; UpdateValue(ref myNumber); Console.WriteLine(myNumber); // Outputs: 15
public void GetValues(out int value1, out int value2) { value1 = 10; value2 = 20; } GetValues(out int a, out int b); Console.WriteLine(a); // Outputs: 10 Console.WriteLine(b); // Outputs: 20
ریف عام طور پر اس وقت استعمال ہوتا ہے جب کسی طریقہ کو موجودہ متغیر میں ترمیم کرنے کی ضرورت ہوتی ہے، جب کہ آؤٹ اس وقت استعمال ہوتا ہے جب کسی طریقہ کو متعدد اقدار واپس کرنے یا ان اقدار کو شروع کرنے کی ضرورت ہوتی ہے جو کالر کے ذریعہ فراہم نہیں کی گئی تھیں۔
.NET میں، موثر ایپلی کیشنز لکھنے کے لیے غیر مطابقت پذیر پروگرامنگ ضروری ہے جو بوجھ کے نیچے اچھی کارکردگی کا مظاہرہ کرتی ہے۔ async اور await کلیدی الفاظ غیر مطابقت پذیر آپریشنز کے ساتھ کام کرنے کو آسان بناتے ہیں۔
public async Task<string> FetchDataAsync() { await Task.Delay(1000); // Simulates an asynchronous operation return "Data fetched"; }
public async Task ShowDataAsync() { string data = await FetchDataAsync(); Console.WriteLine(data); }
اگر آپ اپنی ایپلیکیشن کی کارکردگی کو بہتر بنانا چاہتے ہیں تو async کا استعمال کریں اور مؤثر طریقے سے انتظار کریں اور اسی وقت ایپلیکیشن UI کو ریسپانسیو رکھیں۔
مستثنیات کو احسن طریقے سے سنبھالنا مضبوط اور صارف دوست ایپلی کیشنز کو برقرار رکھنے کے لیے بہت ضروری ہے۔ .NET کور استثناء سے نمٹنے کے لیے مختلف میکانزم فراہم کرتا ہے۔
try { int result = 10 / 0; // This will throw a DivideByZeroException } catch (DivideByZeroException ex) { Console.WriteLine("An error occurred: " + ex.Message); }
public void Configure(IApplicationBuilder app) { app.UseExceptionHandler("/Home/Error"); }
عالمی استثنیٰ ہینڈلنگ مڈل ویئر تمام ایپلیکیشن کی غلطیوں اور استثناء کو ہینڈل کرنے کے لیے ایک مشترکہ جگہ فراہم کرتا ہے۔ یہ یقینی بناتا ہے کہ درخواست مسلسل جوابات کو ہینڈل کرتی ہے۔
appsettings.json فائل کا استعمال ایپلیکیشن کی اسناد کے نظم کرنے کے لیے کیا جاتا ہے، جیسے کنفیگریشن سٹرنگز اور دیگر ایپلیکیشن مخصوص کیز۔ ترتیب کی ترتیبات کو بھی ماحول کے مطابق تقسیم کیا جا سکتا ہے۔
{ "ConnectionStrings": { "DefaultConnection": "Server=myServerAddress;Database=myDataBase;User Id=myUsername;Password=myPassword;" }, "Logging": { "LogLevel": { "Default": "Warning" } } }
public class MyService { private readonly string _connectionString; public MyService(IConfiguration configuration) { _connectionString = configuration.GetConnectionString("DefaultConnection"); } }
appsettings.json فائل کنفیگریشن سیٹنگز کو آسانی سے بازیافت کرنے کی اجازت دیتی ہے، اسے موثر طریقے سے ہینڈل کرنے کی ضرورت ہے۔
ٹاسک اور تھریڈ دونوں کو C# میں سمورتی پروگرامنگ کے لیے استعمال کیا جاتا ہے، لیکن وہ مختلف مقاصد کو پورا کرتے ہیں۔
Thread thread = new Thread(() => { Console.WriteLine("Running on a new thread"); }); thread.Start();
Task.Run(() => { Console.WriteLine("Running asynchronously"); });
ٹاسک غیر مطابقت پذیر آپریشنز کے انتظام کو آسان بناتے ہیں اور جدید C# ترقی کے لیے اکثر ترجیحی انتخاب ہوتے ہیں۔
مکمل C# .Net انٹرویو سیریز تک رسائی حاصل کریں۔
اگر آپ اعتماد کے ساتھ تصور کو جانتے ہیں اور کوڈ کی مثالوں کو سمجھتے ہیں، تو آپ کو .NET میں اچھی طرح سے عبور حاصل ہونے کا امکان ہے۔
آئیے گفتگو کو جاری رکھیں اور .NET پیشہ ور افراد کے طور پر بڑھنے میں ایک دوسرے کی مدد کریں۔
مبارک کوڈنگ!