- sziku69: Szólánc.
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- gban: Ingyen kellene, de tegnapra
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- MaxxDamage: Vizes Laptop Hűtés? Lehetséges? Igen!
- Fire/SOUL/CD: INGYENES Clone és Backup-Restore alkalmazások tesztje [2024]
- sh4d0w: Én és a számítógép
- sh4d0w: Árnyékos sarok
- Elektromos rásegítésű kerékpárok
Aktív témák
-
pmonitor
aktív tag
A C# topikban volt 2 kijelentés, ami arra ösztönzött, hogy írjak 1 példa kódot. Ezek a kijelentések. Az egyik:
c#-ban mindennek van egy közös szülőtípusa, úgy hívják object
A másik:
Igen. Foreachel, de igazából, while, for, tökmindegy mivel gyűjteményeken iterálsz végig, nem típuson.
A következő kódban egyértelműen látszik, hogy mi a fő különbség a class és a struct között.
Mint ahogy az is látható, hogy a foreach megvalósítható while() és for() ciklussal is, de:
1: Nem erre találták ki ezeket, hogy 1 user programozó így használja ezeket, amikor ott van a foreach(). A foreach direkt erre készült.
2: A while() használata esetén igazából 3 utasítás az, amit a foreach() 1 utasítással megold.
3: A foreach használata biztonságosabb, mint a while(). Lásd a példakódban azt a sort, aminek a végén a "//BUMMM!!!" megjegyzés van.using System;
using System.Collections.Generic;
namespace Teszt
{
class TesztOsztaly
{
public int X { get; set; }
public TesztOsztaly(int x)
{
X = x;
}
}
struct TesztStruct
{
public int X;
public TesztStruct(int x)
{
X = x;
}
}
internal class Program
{
static void Main(string[] args)
{
List<TesztOsztaly> tesztosztalyok = new List<TesztOsztaly>();
tesztosztalyok.Add(new TesztOsztaly(1));
tesztosztalyok.Add(new TesztOsztaly(2));
tesztosztalyok.Add(new TesztOsztaly(3));
foreach (TesztOsztaly item in tesztosztalyok)
{
//if (item.X == 2) item = new TesztOsztaly(6); //Invalid!!!
//if (item.X == 2) tesztosztalyok.Remove(item); //Invalid!!!
//tesztosztalyok[1] = new TesztOsztaly(5); //Invalid!!!
item.X = 11;
}
for (int i = tesztosztalyok.Count - 1; i >= 0; --i)
{
if (tesztosztalyok[i].X == 1) tesztosztalyok.RemoveAt(i); //Valid!!!
if (tesztosztalyok[i].X == 2) tesztosztalyok[i] = new TesztOsztaly(6); //Valid!!!
if (tesztosztalyok[i].X == 6) tesztosztalyok[i] = new TesztOsztaly(8); //Valid!!!
}
HashSet<TesztOsztaly> htesztosztalyok = new HashSet<TesztOsztaly>();
htesztosztalyok.Add(new TesztOsztaly(1));
htesztosztalyok.Add(new TesztOsztaly(2));
htesztosztalyok.Add(new TesztOsztaly(3));
htesztosztalyok.Add(new TesztOsztaly(4));
HashSet<TesztOsztaly>.Enumerator enumerator = htesztosztalyok.GetEnumerator();
while (enumerator.MoveNext())
{
TesztOsztaly item = enumerator.Current;
//if (item.X == 3) htesztosztalyok.Remove(item); //Invalid!!!
item.X = 11;
item = new TesztOsztaly(3); //BUMMM!!!
}
Console.WriteLine("htesztosztalyok:");
foreach (TesztOsztaly item in htesztosztalyok)
{
Console.WriteLine(item.X);
}
Console.WriteLine("");
foreach (TesztOsztaly item in htesztosztalyok)
{
item.X = 12;
}
foreach (TesztOsztaly item in htesztosztalyok)
{
Console.WriteLine(item.X);
}
Console.WriteLine("tesztstructlist:");
List<TesztStruct> tesztstructlist = new List<TesztStruct>();
tesztstructlist.Add(new TesztStruct(1));
tesztstructlist.Add(new TesztStruct(2));
tesztstructlist.Add(new TesztStruct(3));
tesztstructlist.Add(new TesztStruct(4));
foreach (TesztStruct item in tesztstructlist)
{
//item.X = 11; //Invalid!!!
}
List<TesztStruct>.Enumerator enumeratorstruct = tesztstructlist.GetEnumerator();
while (enumeratorstruct.MoveNext())
{
TesztStruct item = enumeratorstruct.Current;
Console.WriteLine(item.X);
}
Console.ReadKey(true);
}
}
}Aki ezt a kódot megérti, hogy mi miért úgy történik ahogy, akkor ő megértette a lényeget. És nem ír olyanokat, hogy tökmind1, hogy foreach(), for(), vagy while().
Aktív témák
- GYÖNYÖRŰ iPhone 13 Pro 128GB Silver -1 ÉV GARANCIA - Kártyafüggetlen, MS3387, 96% Akkumulátor
- SanDisk Extreme Portable 8TB (SDSSDE61-8T00-G25)
- Apple iPhone 13 / 128GB / Gyárifüggetlen / 12Hó Garancia / 89% akku
- PS Plus előfizetések kedvező áron
- Bomba ár! Fujitsu LifeBook U904 - i5-4G I 10GB I 256SSD I 14" QHD+ I HDMI I Cam I W10 I Garancia!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest