यो लेख आफ्नो .NET विशेषज्ञता प्रमाणित गर्न चाहने जो कोहीको लागि उपयुक्त छ!
नमस्कार .NET विकासकर्ताहरू,
यस लेखमा, म विभिन्न C# अवधारणाहरू अन्वेषण गर्नेछु जुन प्रत्येक विकासकर्तालाई थाहा हुनुपर्छ। तपाईको ज्ञानको परीक्षण गर्न यो सधैं राम्रो विचार हो र मैले यस लेखमा स्पष्टीकरण र कोड उदाहरणहरू सहित केही उदाहरणहरू सँगै राखेको छु।
यदि तपाइँ कोड उदाहरणहरू जान्नुहुन्छ र बुझ्नुहुन्छ भने, तपाइँ सम्भवतः .NET मा धेरै राम्रो गर्दै हुनुहुन्छ।
C# मा तर्क लेख्दा, विकासकर्ताहरूले बारम्बार IEnumerable<T> र ICCollection<T> सामना गर्छन्। तिनीहरू धेरै समान देखिन सक्छन् तर तिनीहरू सफ्टवेयर विकासमा फरक उद्देश्यहरू सेवा गर्छन्।
हल्का तौलको सङ्कलन हुनु राम्रो हो जुन अधिक सुरक्षित छ, किनकि डाटा हेरफेरलाई अनुमति छैन। कुनै पनि संग्रह यदि तपाइँ डेटा हेरफेर रोक्न चाहनुहुन्छ भने, यसलाई IEnumerable<T> प्रयोग गर्न सिफारिस गरिन्छ
IEnumerable<int> numbers = new List<int> { 1, 2, 3 }; foreach (var number in numbers) { Console.WriteLine(number); // Outputs: 1 2 3 }
ICCollection<T> विस्तार गर्दछ IEnumerable<T> ले परिमार्जन विधिहरूको मद्दतले परिमार्जनहरूलाई अनुमति दिन्छ। यो इन्टरफेसले संग्रहमा गणनाहरू थप्न, हटाउन र जाँच गर्ने तरिकाहरू समावेश गर्दछ।
ICollection<int> data = new List<int> { 12,43,556}; numbers.Add(4); Console.WriteLine(data.Count); // Outputs: 4
सङ्कलनका लागि परिवर्तन विधिहरू र साधारण पढ्ने कार्यहरूको लागि IEnumerable<T> आवश्यक हुँदा ICcollection<T> लाई सिफारिस गरिन्छ।
DI डिजाईन ढाँचा प्रयोग गर्न सिफारिस गरिन्छ जब तपाईं ढिलो जोडिएको र परीक्षण योग्य कोड लेख्न चाहनुहुन्छ, i। DI को साथ, विकासकर्ताहरूले सजिलैसँग कक्षाहरू बीच निर्भरताहरू व्यवस्थापन गर्न सक्छन्।
.NET Core मा DI को लागि निर्मित समर्थन छ, यसलाई कार्यान्वयन गर्न सजिलो बनाउँदै।
कसरी विकासकर्ताले C# मा DI लागू गर्न सक्छ
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 पेशेवरहरूको रूपमा बढ्न मद्दत गरौं।
शुभ कोडिङ!