Diskuze: Elegantnější způsob?

C# .NET .NET (C# a Visual Basic) Elegantnější způsob? American English version English version

Avatar
matesax
Redaktor
Avatar
matesax:

Dobrý den,
neznáte elegantnější způsob odstranění řádku z pole? Moje řešení:

 var k = new System.Collections.Generic.List<string>(this.vety);
k.Remove("");
this.vety = k.ToArray();

Asi nemusím vysvětlovat co co je.

 
Odpovědět 3.7.2012 17:23
Avatar
Kit
Redaktor
Avatar
Kit:

Koukám, že seznamu říkáš pole. Zkus mu říkat seznam.

C# sice neznám, ale napadá mě

System.Collections.Generic.List<string>.Remove(this.vety);

Kdyby to nebylo ono, tak zkus tohle:
http://www.dotnetperls.com/list-remove
http://www.dotnetperls.com/removeall

Nahoru Odpovědět 3.7.2012 17:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Kit
Kit:

Koukám, že ten můj první nápad je asi blbě. Zkusím druhý chybný:

this.vety.Remove("");

Trochu mi uniká, proč převádíš pole na seznam a naopak. Proč nemáš objekt this.vety typu seznam?

Nahoru Odpovědět 3.7.2012 17:41
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na Kit
Kit:

A zkusím do třetice:

this.vety.RemoveAll(item => item == "");

Ještě by to mělo jít metodou Where:
http://www.dotnetperls.com/where

Nahoru Odpovědět 3.7.2012 18:04
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ne - nepletu si seznam a pole. Přes where je to cyklus - to není elegantnější,... A to

this.vety.RemoveAll(item => item == "");

nejde,... Minimálně to nebere RemoveAll.

 
Nahoru Odpovědět 3.7.2012 18:25
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Ano - nejjednoduší by bylo, kdybych to mohl používat jako List - ale využívám tam pak Metody, které fungují jen pro pole,... Pole nemá žádnou funkci remove, replace, či tak. Proto to dělám přes list, kde to jde,...

 
Nahoru Odpovědět 3.7.2012 18:28
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Jaký cyklus? Psal jsem o metodě Where(). Podíval ses vůbec na ten odkaz? Tam žádný cyklus není.

Nahoru Odpovědět 3.7.2012 18:29
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Podle názvu this.vety se nejedná o pole, ale o seznam vět. Pokud na to aplikuješ metody, které pracují jen s polem, děláš to asi chybně.

Nahoru Odpovědět 3.7.2012 18:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
matesax
Redaktor
Avatar
Odpovídá na Kit
matesax:

Co je špatného na Regex.Split()?

 
Nahoru Odpovědět 3.7.2012 18:35
Avatar
Kit
Redaktor
Avatar
Odpovídá na matesax
Kit:

Regex.Split()? Na ní nic špatného není. Jen ji evidentně špatně používáš.

Nahoru Odpovědět 3.7.2012 18:40
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

Na poli remove nebude již z podstaty, protože má pevnou velikost ;) Elegantní způsob neexistuje, pokud potřebuješ ze struktury mazat, nepoužívej pole.

Nahoru Odpovědět 4.7.2012 8:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.