Šis straipsnis puikiai tinka visiems, norintiems įrodyti savo .NET žinias!
Sveiki, .NET kūrėjai,
Šiame straipsnyje išnagrinėsiu įvairias C# sąvokas, kurias turi žinoti kiekvienas kūrėjas. Visada yra puiki idėja pasitikrinti savo žinias, todėl šiame straipsnyje pateikiau keletą pavyzdžių su paaiškinimais ir kodų pavyzdžiais.
Jei žinote ir suprantate kodo pavyzdžius, greičiausiai jums puikiai sekasi naudoti .NET.
Rašydami logiką C# , kūrėjai dažnai susiduria su IEnumerable<T> ir ICollection<T>. Jie gali atrodyti gana panašūs, tačiau jie tarnauja skirtingiems programinės įrangos kūrimo tikslams.
Gerai turėti lengvą kolekciją, kuri yra saugesnė, nes negalima manipuliuoti duomenimis. Bet kokiai kolekcijai, jei norite išvengti manipuliavimo duomenimis, rekomenduojama naudoti IEnumerable<T>
IEnumerable<int> numbers = new List<int> { 1, 2, 3 }; foreach (var number in numbers) { Console.WriteLine(number); // Outputs: 1 2 3 }
ICollection<T> išplečia IEnumerable<T> leidžia modifikuoti naudojant keitimo metodus. Ši sąsaja susideda iš metodų, kaip pridėti, pašalinti ir patikrinti skaičių kolekcijoje.
ICollection<int> data = new List<int> { 12,43,556}; numbers.Add(4); Console.WriteLine(data.Count); // Outputs: 4
Rekomenduotina ICollection<T>, kai reikia keisti metodus rinkimui ir IEnumerable<T> paprastiems skaitymo veiksmams.
Rekomenduojama naudoti DI dizaino šabloną, kai norite parašyti laisvai susietą ir tikrinamą kodą, t. Naudodami DI, kūrėjai gali lengvai valdyti priklausomybes tarp klasių.
.NET Core turi integruotą DI palaikymą, todėl jį lengva įdiegti.
Kaip kūrėjas gali įdiegti 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); } }
Kodas yra lengviau prižiūrimas ir išbandomas, kai kūrėjas atsieja paslaugų kūrimą.
C# kalboje ref ir out naudojami parametrams perduoti pagal nuorodą, tačiau jie turi skirtingas charakteristikas.
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
ref paprastai naudojamas, kai metodui reikia modifikuoti esamą kintamąjį, o out naudojamas, kai metodui reikia grąžinti kelias reikšmes arba inicijuoti reikšmes, kurių nepateikė skambinantis asmuo.
.NET asinchroninis programavimas yra būtinas norint rašyti veiksmingas programas, kurios gerai veikia esant apkrovai. Asinchroniniai ir laukimo raktiniai žodžiai supaprastina darbą su asinchroninėmis operacijomis.
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); }
Jei norite pagerinti programos našumą, naudokite asinchronizavimą ir laukite efektyviai ir tuo pačiu užtikrindami, kad programos vartotojo sąsaja bus reaguojama.
Grakščiai tvarkyti išimtis yra labai svarbu norint išlaikyti patikimas ir patogias programas. .NET Core pateikia įvairius išimčių tvarkymo mechanizmus.
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"); }
Visuotinės išimčių tvarkymo tarpinė programinė įranga suteikia bendrą vietą visoms programų klaidoms ir išimtims tvarkyti. Tai užtikrina, kad programa nuosekliai tvarko atsakymus.
Failas appsettings.json naudojamas programos kredencialams, pvz., konfigūracijos eilutėms ir kitiems konkrečios programos raktams, tvarkyti. Konfigūracijos nustatymus taip pat galima suskirstyti pagal aplinką
{ "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"); } }
Failas appsettings.json leidžia lengvai gauti konfigūracijos nustatymus, todėl juos reikia tvarkyti efektyviai.
Tiek „Task“, tiek „Tread“ yra naudojami tuo pačiu metu programuoti C#, tačiau jie naudojami skirtingiems tikslams.
Thread thread = new Thread(() => { Console.WriteLine("Running on a new thread"); }); thread.Start();
Task.Run(() => { Console.WriteLine("Running asynchronously"); });
Užduotys supaprastina asinchroninių operacijų valdymą ir dažnai yra tinkamiausias pasirinkimas kuriant šiuolaikinį C#.
Pasiekite visą C# .Net interviu seriją
Jei užtikrintai žinote sąvoką ir suprantate kodo pavyzdžius, greičiausiai esate gerai išmanantis .NET.
Tęskime pokalbį ir padėkime vieni kitiems augti kaip .NET profesionalams.
Laimingas kodavimas!