C# struct .Count .Add ... – .NET – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

C# struct .Count .Add ... – .NET – Fórum – Programujte.comC# struct .Count .Add ... – .NET – Fórum – Programujte.com

 

Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
kowi0
Duch
7. 12. 2011   #1
-
0
-

Ahojte,

poprosil by som Vás o radu:

Potrebujem dynamicky pridávať prvky do vlastnej štruktúry. (štruktúru sa snažím použiť prvý raz, tak si niesom úplne istý, či vôbec idem správnou cestou).

Potreboval by som niečo takéto: 

MojaStruktura.Add ("string", 1, 2, false); //(string, int, int, bool)

...

MojaStruktura.Count(); //aktuálny počet 

MessageBox.Show(MojaStruktura[0].Nazov); //vráti string

MessageBox.Show(MojaStruktura[0].num1.ToString()); //vráti 1

MessageBox.Show(MojaStruktura[0].num2.ToString()); //vráti 2

...

Predpokladám že vo funkcii Add budem musieť skopírovať pôvodnú štruktúru, vytvori´t novú (+1), pôvodnú nakopírovať do novej a pridať na koniec nové hodnoty - ale netuším ako na to. 

Vďaka.

Nahlásit jako SPAM
IP: 82.119.233.–
Reklama
Reklama
Mario
~ Anonymní uživatel
14 příspěvků
7. 12. 2011   #2
-
+1
-
Zajímavé

#1 kowi
No možná asi hledáš generickou kolekci List<T>, kde T je tvoje struktura, třída nebo cokoli jiného

Mario

Nahlásit jako SPAM
IP: 83.69.34.–
Marvin
~ Anonymní uživatel
23 příspěvků
7. 12. 2011   #3
-
0
-

Nestačilo by pole?

Nahlásit jako SPAM
IP: 90.176.13.–
kowi0
Duch
7. 12. 2011   #4
-
0
-

#2 Mario
vďaka, pozriem sa na to

#3 Marvin
pravdu povediac, momentálne si len zisťujem čo bude najlepšie...

V DLL mám funkciu do ktorej posielam List<string> s poziciami, ktoré spracuvávam(napr.A1, C5, D4....) a teraz si zisťujem, aký typ použiť na návratovú hodnotu - potrebujem pole, kde bude viac dátových typov (string, integer, boolean...), ale dopredu neviem jeho velkosť.

Vlastne chcel by som vlastnosti List<T> (add, count...), ale potrebujem viac dátových typou vracať cez return funkcie ako celok. (pole[0].meno, pole[0].pozicia, pole[0].bold .....).

Nahlásit jako SPAM
IP: 91.127.233.–
Zed_10
Newbie
7. 12. 2011   #5
-
0
-

A nepomohlo by si udělat třídu s těmi datovými typy a přidávat její instanci do listu?

A nebo použít Dictionary?

Nahlásit jako SPAM
IP: 81.30.240.–
Marvin
~ Anonymní uživatel
23 příspěvků
7. 12. 2011   #6
-
+1
-
Zajímavé

namespace Program
{
    static class Program
    {
        static data[] d = new data[0];
        static void main()
        {
            Array.Resize(ref d, d.Length + 1);
            d[d.Length] = new data("abc", 1, true);
            Console.WriteLine(d[0].s);
            Console.WriteLine(d[0].i.ToString());
            Console.WriteLine(d[0].b.ToString());
            Console.ReadKey();
        }
    }
    class data
    {
        public string s;
        public int i;
        public bool b;
        public data(string s, int i, bool b)
        {
            this.s = s;
            this.i = i;
            this.b = b;
        }

    }
}

nak takto

Nahlásit jako SPAM
IP: 90.176.13.–
Marvin0
Newbie
7. 12. 2011   #7
-
0
-

jeste dopnění místo tohoto řádku

d[d.Length] = new data("abc", 1, true);

má být tento

d[d.Length-1] = new data("abc", 1, true);

(psal jsem to narychlo)

Nahlásit jako SPAM
IP: 90.176.13.–
kowi0
Duch
8. 12. 2011   #8
-
0
-

#7 Marvin
ďakujem.

skončil som pri niečom takomto - mal by som tam niečo ošetriť?

v DLL:

public class MyClass
    {
      private List<string> name=new List<string>();
      private List<int> x = new List<int>();
      private List<bool> q = new List<bool>();

      public List<string> Name
      {
          get { return name; }
      }

      public List<int> X
      {
          get { return x; }
      }

      public List<bool> Q
      {
          get { return q; }
      }

       public void Add(string add_name, int add_x, bool add_q)
       {
            name.Add(add_name);
            x.Add(add_x);
            q.Add(add_q);
       }
    }

Form:

MyClass xs = new MyClass();
xs.Add("d",5,true);
xs.Add("", 2, false);
MessageBox.Show(xs.Name[0] + ";" + xs.X[0].ToString()); 

MessageBox.Show(xs.Name[1] + ";" + xs.X[1].ToString());

MessageBox.Show(xs.X.Count.ToString());

Nahlásit jako SPAM
IP: 82.119.233.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 53 hostů

Podobná vlákna

C# - ms word 2010 add-in — založil michael night

Filmova DB void add() problem — založil Klimatex

Funkce count, ano či ne ? — založil Michal

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý