Zanima me kako se najlažje spoprijeti s problemom, ko si v tabeli rezerviramo »preveč« prostora? Pojavi se namreč težava, ko iteriramo po njej, saj dobivamo (pri izpisu naprimer) prazne vrstice.
Klasična rešitev je ta, da vodimo še spremenljivko, ki pove dejansko zapolnjenost tabele, Torej:
int ind_prvega_praznega = 0
string[] vrstice = new string[100];
Seveda moramo potem paziti, da ustrezno popravljamo ind_prvega_praznega.
========================
Mimogrede - rekel sem, da nam pri tabelah iz Pythona manjka "rezanje". Pa ni tako.
Od C# 8.0 dalje lahko napišemo npr.
int[] vals = { 1, 2, 3, 4, 5, 6, 7 };
int[] vals2 = vals[1..5];ali pa
Index i1 = 3; // number 3 from beginning
Index i2 = ^4; // number 4 from end
int[] a = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
Console.WriteLine($"{a[i1]}, {a[i2]}"); // "3, 6"
var slice = a[i1..i2]; // { 3, 4, 5 }Še en primerint[] array = new int[] { 1, 2, 3, 4, 5 };int[] slice1 = array[2..^3]; // array[new Range(2, new Index(3, fromEnd: true))]int[] slice2 = array[..^3]; // array[Range.EndAt(new Index(3, fromEnd: true))]int[] slice3 = array[2..]; // array[Range.StartAt(2)]int[] slice4 = array[..]; // array[Range.All]Seveda pa gre tudi na številne druge načine (kot je "vedno" v .NET)
float[] subArray = new List<float>(myArray).GetRange(0, 8).ToArray();# potrebujemo LINQbyte[] arr = {1, 2, 3, 4, 5, 6, 7, 8};
var subset = arr.Skip(2).Take(2);# ali paBuffer.BlockCopy()
# ali pa Array.Copy()...