paint-brush
آپ کی .NET مہارتوں کو جانچنے کے لیے 7 کلیدی تصورات کی طرف سے@ssukhpinder
129 ریڈنگز

آپ کی .NET مہارتوں کو جانچنے کے لیے 7 کلیدی تصورات

کی طرف سے Sukhpinder Singh7m2024/09/30
Read on Terminal Reader

بہت لمبا؛ پڑھنے کے لئے

یہ مضمون .NET ڈویلپرز کے لیے اہم C# تصورات کا احاطہ کرتا ہے، بشمول IEnumerable بمقابلہ IC Collection، Dependency Injection، async/await، ref vs. out parameters، exception handling، اور concurrent programming میں Task اور Thread کے درمیان فرق۔ یہ آپ کی سمجھ کو جانچنے اور گہرا کرنے کے لیے عملی کوڈ کی مثالیں فراہم کرتا ہے۔
featured image - آپ کی .NET مہارتوں کو جانچنے کے لیے 7 کلیدی تصورات
Sukhpinder Singh HackerNoon profile picture
0-item
1-item
2-item
3-item

یہ مضمون ہر اس شخص کے لیے بہترین ہے جو اپنی .NET مہارت ثابت کرنا چاہتے ہیں!


ہیلو .NET ڈویلپرز،


اس مضمون میں، میں مختلف C# تصورات کو تلاش کروں گا جو ہر ڈویلپر کو معلوم ہونا چاہیے۔ آپ کے علم کی جانچ کرنا ہمیشہ ایک اچھا خیال ہوتا ہے اور میں نے اس مضمون میں وضاحتوں اور کوڈ کی مثالوں کے ساتھ چند مثالیں جمع کی ہیں۔


اگر آپ کوڈ کی مثالوں کو جانتے اور سمجھتے ہیں تو، آپ .NET میں کافی اچھی کارکردگی کا مظاہرہ کر رہے ہیں۔

1. IEnumerable<T> بمقابلہ IC Collection<T> کے درمیان فرق

C# میں منطق لکھتے ہوئے، ڈویلپرز کو اکثر IEnumerable<T> اور IC Collection<T> کا سامنا کرنا پڑتا ہے۔ وہ کافی ملتے جلتے نظر آسکتے ہیں لیکن وہ سافٹ ویئر ڈویلپمنٹ میں مختلف مقاصد کی تکمیل کرتے ہیں۔


  • IEnumerable<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> کو پڑھنے کے آسان اعمال کے لیے۔

2. NET کور میں انحصار انجیکشن کا کردار

جب آپ ڈھیلے جوڑے اور قابل جانچ کوڈ لکھنا چاہتے ہیں تو DI ڈیزائن پیٹرن استعمال کرنے کی سفارش کی جاتی ہے، i۔ DI کے ساتھ، ڈویلپر کلاسوں کے درمیان انحصار کو آسانی سے منظم کر سکتے ہیں۔


.NET Core میں DI کے لیے بلٹ ان سپورٹ ہے، جو اسے لاگو کرنا آسان بناتا ہے۔


ایک ڈویلپر DI کو C# میں کیسے نافذ کر سکتا ہے

  • اپنی Startup.cs فائل کے ConfigureServices طریقہ میں خدمات کو رجسٹر کریں ۔ یہ وہ جگہ ہے جہاں آپ وضاحت کرتے ہیں کہ انجیکشن کے لیے کون سی خدمات دستیاب ہوں گی۔
 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); } }

جب ایک ڈویلپر خدمات کی تخلیق کو ڈیکپل کرتا ہے تو ایک کوڈ زیادہ برقرار اور قابل جانچ ہوتا ہے۔

3. ریف اور آؤٹ پیرامیٹرز کے درمیان فرق

C# میں، ref اور out کو حوالہ کے لحاظ سے پیرامیٹرز کو منتقل کرنے کے لیے استعمال کیا جاتا ہے، لیکن ان کی الگ خصوصیات ہیں۔

  • ref پیرامیٹرز کا تقاضا ہے کہ متغیر کو کسی طریقہ پر منتقل کرنے سے پہلے اسے شروع کیا جائے۔ اس کے بعد طریقہ متغیر کی قدر میں ترمیم کر سکتا ہے۔
 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

ریف عام طور پر اس وقت استعمال ہوتا ہے جب کسی طریقہ کو موجودہ متغیر میں ترمیم کرنے کی ضرورت ہوتی ہے، جب کہ آؤٹ اس وقت استعمال ہوتا ہے جب کسی طریقہ کو متعدد اقدار واپس کرنے یا ان اقدار کو شروع کرنے کی ضرورت ہوتی ہے جو کالر کے ذریعہ فراہم نہیں کی گئی تھیں۔

4. Async اور انتظار کریں: ایپلیکیشن کی کارکردگی کو بہتر بنانا

.NET میں، موثر ایپلی کیشنز لکھنے کے لیے غیر مطابقت پذیر پروگرامنگ ضروری ہے جو بوجھ کے نیچے اچھی کارکردگی کا مظاہرہ کرتی ہے۔ async اور await کلیدی الفاظ غیر مطابقت پذیر آپریشنز کے ساتھ کام کرنے کو آسان بناتے ہیں۔

  • async طریقے آپ کو کاموں کو متضاد طور پر انجام دینے کی اجازت دیتے ہیں۔ async کلیدی لفظ کے ساتھ ایک طریقہ کو نشان زد کریں تاکہ اس کے اندر await کے استعمال کو فعال کیا جا سکے۔
 public async Task<string> FetchDataAsync() { await Task.Delay(1000); // Simulates an asynchronous operation return "Data fetched"; }


  • await مین تھریڈ کو بلاک نہ کرکے ایپلیکیشن UI میں مدد کرتا ہے۔
 public async Task ShowDataAsync() { string data = await FetchDataAsync(); Console.WriteLine(data); }

اگر آپ اپنی ایپلیکیشن کی کارکردگی کو بہتر بنانا چاہتے ہیں تو async کا استعمال کریں اور مؤثر طریقے سے انتظار کریں اور اسی وقت ایپلیکیشن UI کو ریسپانسیو رکھیں۔

5. .NET کور ایپلی کیشنز میں استثنیٰ ہینڈلنگ

مستثنیات کو احسن طریقے سے سنبھالنا مضبوط اور صارف دوست ایپلی کیشنز کو برقرار رکھنے کے لیے بہت ضروری ہے۔ .NET کور استثناء سے نمٹنے کے لیے مختلف میکانزم فراہم کرتا ہے۔

  • مقامی استثنیٰ ہینڈلنگ: مستثنیات کو پکڑنے اور ہینڈل کرنے کے لیے ٹرائی کیچ بلاکس کا استعمال کریں۔
 try { int result = 10 / 0; // This will throw a DivideByZeroException } catch (DivideByZeroException ex) { Console.WriteLine("An error occurred: " + ex.Message); }


  • ASP.NET کور میں عالمی استثنیٰ ہینڈلنگ کو مڈل ویئر کا استعمال کرتے ہوئے منظم کیا جا سکتا ہے۔ تمام قسم کی مستثنیات کو ایک مشترکہ جگہ پر پکڑیں جس سے ڈویلپرز کو صارفین کے لیے صارف دوست/عام غلطی کے پیغامات کا نظم کرنے میں مدد ملتی ہے۔
 public void Configure(IApplicationBuilder app) { app.UseExceptionHandler("/Home/Error"); }

عالمی استثنیٰ ہینڈلنگ مڈل ویئر تمام ایپلیکیشن کی غلطیوں اور استثناء کو ہینڈل کرنے کے لیے ایک مشترکہ جگہ فراہم کرتا ہے۔ یہ یقینی بناتا ہے کہ درخواست مسلسل جوابات کو ہینڈل کرتی ہے۔

6. appsettings.json ASP.NET کور کا کردار

appsettings.json فائل کا استعمال ایپلیکیشن کی اسناد کے نظم کرنے کے لیے کیا جاتا ہے، جیسے کنفیگریشن سٹرنگز اور دیگر ایپلیکیشن مخصوص کیز۔ ترتیب کی ترتیبات کو بھی ماحول کے مطابق تقسیم کیا جا سکتا ہے۔

  • 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 فائل کنفیگریشن سیٹنگز کو آسانی سے بازیافت کرنے کی اجازت دیتی ہے، اسے موثر طریقے سے ہینڈل کرنے کی ضرورت ہے۔

7. C# میں ٹاسک بمقابلہ تھریڈ کو سمجھنا

ٹاسک اور تھریڈ دونوں کو C# میں سمورتی پروگرامنگ کے لیے استعمال کیا جاتا ہے، لیکن وہ مختلف مقاصد کو پورا کرتے ہیں۔

  • تھریڈ عملدرآمد کے ایک واحد راستے کی نمائندگی کرتا ہے اور یہ ایک نچلی سطح کی تعمیر ہے۔ یہ عملدرآمد پر زیادہ کنٹرول فراہم کرتا ہے لیکن اس کے لیے دستی انتظام کی ضرورت ہوتی ہے۔
 Thread thread = new Thread(() => { Console.WriteLine("Running on a new thread"); }); thread.Start();


  • ٹاسک async آپریشنز کو نافذ کرنے کے لیے ایک تجریدی فعالیت فراہم کرتا ہے اور اسے async/await کے ساتھ استعمال کیا جاتا ہے۔
 Task.Run(() => { Console.WriteLine("Running asynchronously"); });

ٹاسک غیر مطابقت پذیر آپریشنز کے انتظام کو آسان بناتے ہیں اور جدید C# ترقی کے لیے اکثر ترجیحی انتخاب ہوتے ہیں۔


مکمل C# .Net انٹرویو سیریز تک رسائی حاصل کریں۔

تو، آپ نے کیسے کیا؟

اگر آپ اعتماد کے ساتھ تصور کو جانتے ہیں اور کوڈ کی مثالوں کو سمجھتے ہیں، تو آپ کو .NET میں اچھی طرح سے عبور حاصل ہونے کا امکان ہے۔

آئیے گفتگو کو جاری رکھیں اور .NET پیشہ ور افراد کے طور پر بڑھنے میں ایک دوسرے کی مدد کریں۔


مبارک کوڈنگ!