paint-brush
तपाईंको .NET कौशल परीक्षण गर्न 7 प्रमुख अवधारणाहरू द्वारा@ssukhpinder
129 पढाइहरू

तपाईंको .NET कौशल परीक्षण गर्न 7 प्रमुख अवधारणाहरू

द्वारा Sukhpinder Singh7m2024/09/30
Read on Terminal Reader

धेरै लामो; पढ्नकाे लागि

यस लेखले .NET विकासकर्ताहरूका लागि महत्वपूर्ण C# अवधारणाहरू समावेश गर्दछ, जसमा IEnumerable vs. ICcollection, निर्भरता इंजेक्शन, async/await, ref vs. out parameters, अपवाद ह्यान्डलिङ, र समवर्ती प्रोग्रामिङमा 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> vs. ICCollection<T> बीचको भिन्नता

C# मा तर्क लेख्दा, विकासकर्ताहरूले बारम्बार IEnumerable<T> र ICCollection<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 }
  • 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> लाई सिफारिस गरिन्छ।

2. NET कोर मा निर्भरता इंजेक्शन को भूमिका

DI डिजाईन ढाँचा प्रयोग गर्न सिफारिस गरिन्छ जब तपाईं ढिलो जोडिएको र परीक्षण योग्य कोड लेख्न चाहनुहुन्छ, i। DI को साथ, विकासकर्ताहरूले सजिलैसँग कक्षाहरू बीच निर्भरताहरू व्यवस्थापन गर्न सक्छन्।


.NET Core मा DI को लागि निर्मित समर्थन छ, यसलाई कार्यान्वयन गर्न सजिलो बनाउँदै।


कसरी विकासकर्ताले C# मा DI लागू गर्न सक्छ

  • तपाईंको Startup.cs फाइलको कन्फिगर सेवा विधिमा सेवाहरू दर्ता गर्नुहोस् । यहाँ तपाइँ कुन सेवाहरू इंजेक्शनको लागि उपलब्ध हुनेछ भनेर परिभाषित गर्नुहुन्छ।
 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 लाई सन्दर्भद्वारा प्यारामिटरहरू पास गर्न प्रयोग गरिन्छ, तर तिनीहरूसँग फरक विशेषताहरू छन्।

  • रेफ प्यारामिटरहरूलाई विधिमा पास गर्नु अघि चर प्रारम्भिक हुन आवश्यक छ। विधिले चरको मान परिमार्जन गर्न सक्छ।
 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 कुञ्जी शब्दसँग एउटा विधि चिन्ह लगाउनुहोस्।
 public async Task<string> FetchDataAsync() { await Task.Delay(1000); // Simulates an asynchronous operation return "Data fetched"; }


  • पर्खाइले मुख्य थ्रेडलाई अवरुद्ध नगरी अनुप्रयोग 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 Core को भूमिका

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 पेशेवरहरूको रूपमा बढ्न मद्दत गरौं।


शुभ कोडिङ!