Loading Likes...
Witajcie.
Sporo razy wracając do swojego kodu po pewnym czasie, nie mogę się w nim odnaleźć – i nie chodzi tutaj o brak odpowiednich komentarzy. Po prostu patrząc na niego, wiem, że jest skomplikowany, gdyż można było zrobić “to coś” w inny, bardziej optymalny sposób. Często przy tym łapie się za głowę z niedowierzaniem, że jestem tego twórcą. Jednak myślę, że jeżeli masz podobne doświadczenia to zmierzasz w dobrym kierunku.
Nie bez powodu ten artykuł zacząłem taką refleksją. Programista ma wiele możliwości tworzenia czegokolwiek, natomiast często nie ma pojęcia o istnieniu różnych rozwiązań. Dlatego dzisiaj pokażę Wam pewien trik, dotyczący tworzenia list – bez wykorzystania pętli.
W tym celu wykorzystamy klasę “Enumeralbe” i metodę w niej występującą “Range()”
Na początek pokażę Ci w jaki sposób można wypełnić listę za pomocą pętli.
Jeżeli chciałbyś dowiedzieć się więcej o pętlach wejdz w ten artykuł.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace wiedza_enumerable { class Program { static void Main(string[] args) { List<int> listaLiczb = new List<int>(); for (int i = 1; i >= 100; i++) { listaLiczb.Add(i); } } } } |
Teraz spójrz, jak to samo można osiągnąć wykorzystując metodę Enumerable.Range()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace wiedza_enumerable { class Program { static void Main(string[] args) { var list = Enumerable.Range(1, 100).ToList(); } } } |
Teraz wytłumaczę Ci jak działa metoda Enumerable.Range().
Przede wszystkim wyrzuć sobie z głowy złudne wrażenie. NIE podajemy przedziału liczbowego! Co to znaczy? Jeżeli chcemy uzyskać listę liczb od 25 do 77 to NIE napiszemy Range(25,77).ToList(); tylko:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace wiedza_enumerable { class Program { static void Main(string[] args) { var list = Enumerable.Range(25, 53).ToList(); } } } |
Dlaczego? Proste. Pierwszym parametrem metody jest liczba początkowa, natomiast drugim parametem jest licznik liczb(ile ma mieć elementów lista), UWAGA! mierzony WRAZ Z pierwszą liczbą. Dlatego, aby stworzyć listę liczb od 85 do 540 napiszemy:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace wiedza_enumerable { class Program { static void Main(string[] args) { //liczba początkowa 85 //licznik // 540 - 85 = 455 // otrzymaliśmy różnicę, która nie wlicza pierwszego elementu // dlatego dodajemy 1 do tej wartości aby nie pominąć ostatniego elementu // 455 + 1 var list = Enumerable.Range(85, 456).ToList(); foreach (var i in list) { Console.WriteLine(i); } Console.ReadKey(); } } } |
Pasjonat informatyki, bloger.
Full-stack Developer
Technologie:
- ASP.NET MVC
- ASP.NET CORE
- Angular 2+