Wątek przeniesiony 2015-03-01 22:37 z C# i .NET przez somekind.

Lista z parametrem lista

0

Witam!

Mam do was pytanie, zależy mi na zrobienie czegoś na zasadzie klasy która jako jeden ze swoich parametrów ma inną klasę. Chodzi mi o tworzenie obiektów które mają określone parametry i jeden z nich będzie miał nie określoną ilość i to własnie on miał by być listą, mój rysunek "miej więcej" zaprezentuje o co mi chodzi.

a2a25cd26d6af.jpg

Czy jest takie coś możliwe ? Jeśli tak to był bym wdzięczny za jakiś przykład składni jak takie coś napisać, ewentualnie inne pomysły na rozwiązanie problemu mile widziane.

Z góry dzięki za pomoc.

Pozdrawiam.

dodanie obrazka do załączników i treści posta - @furious programming

0

ni w ząb nie rozumiem nic ani z wypowiedzi ani z rysunku
zapoznaj się chociaż pobieżnie z UML zanim przedstawisz jakieś schematy albo opisz jakoś rozsądniej, najlepiej daj przykład kodu

to normalne że klasa zawiera inne klasy (przez agregację) więc od razu odpowiem że jest to możliwe cokolwiek by to nie było

zapoznaj się też z podstawową terminologią - nie wiem co to są "parametry klasy"
naprawdę nic nie wiadomo z Twojego postu

0
class Example
{
string at1 {get;set;}
string at2 {get;set;}

IList<Example> exampleList

public Example()
{
exampleList = new List<Example>();
}

}

???

dodanie znacznika <code class="csharp"> - @furious programming

0

oke napisałem coś takiego

class1:

namespace listawliscie
{
    public class osoba
    {
        public string imie { get; set; }
        public string nazwisko { get; set; }

        public List<int> lista_int; 
        public osoba(string Imie,string Nazwisko,List<int> Lista_int)//konstruktor
        {
            this.imie = Imie;
            this.nazwisko = Nazwisko;
            lista_int = new List<int>();
        }
    }
}

i próba stworzenia mojego obiektu:

namespace listawliscie
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        List<osoba> list = new List<osoba>();
       

        private void button1_Click(object sender, EventArgs e)
        {
            list.Add(new osoba("Paweł", "Janczak", lista_int.Add(1)));
        }

    }
}

lista_int.Add(1) <- tu jest problem z argumentem tej 2 listy bo nie wiem jak się do niej tu odwołać przy takim zapisie występuje błąd .

Jakieś sugestie jak powinien wyglądać ten argument?

`dodanie znaczników i ``` - @furious programming

0
list.Add(new osoba("Paweł", "Janczak", new List<int>()));

Napisz co chcesz osiągnąć bo tak to błądzisz po omacku. Czym ma być ta lista w klasie osoba?

Edit:
Teraz patrze że to też nie ma sensu

public osoba(string Imie,string Nazwisko,List<int> Lista_int)//konstruktor
        {
            this.imie = Imie;
            this.nazwisko = Nazwisko;
            lista_int = new List<int>();
        }

Napisz do czego ci ta lista potrzebna.

0
list_int[index]

dodanie znacznika <code class="csharp"> - @furious programming

0

Już tłumaczę chce mieć listę osób(obiektów) ,osoba posiada imię ,nazwisko i zbiór nie określonej liczby "numerów" czyli wydaje mi się że najlepiej użyć do tego listy. Ma to wyglądać miej więcej tak:

imię: Paweł
nazwisko: Kowalski
zbiór: 52,35,5,10,1

imię: Michał
nazwisko: Jakiśtam
zbiór: 2,10,5,99

itd...

napisałem coś takiego:

public Form1()
        {
            InitializeComponent();
        }

        public List<osoba> list = new List<osoba>();
        public List<liczba> list_liczba = new List<liczba>();

        private void button1_Click(object sender, EventArgs e)
        {
            list.Add(new osoba("Paweł", "Janczak",new List<liczba>(5)));
            MessageBox.Show(list[0].imie + " " + list[0].nazwisko);
        }
namespace listawliscie
{
    public class osoba
    {
        public string imie { get; set; }
        public string nazwisko { get; set; }

        public osoba(string Imie,string Nazwisko,List<liczba> list_liczba)//konstruktor
        {
            this.imie = Imie;
            this.nazwisko = Nazwisko;
            list_liczba = new List<liczba>();
        }
    }
}
namespace listawliscie
{
    public class liczba
    {
        public int number { get; set; }

        public liczba(int n)
        {
            this.number = n;
        }
    }
}

i niby wszystko działa tylko jak teraz wyświetlić ten "zbiór liczb" bo list_liczba[0].number nie działa .

Z góry dzięki za pomoc.

dodanie znaczników <code class="csharp"> i <code class="none"> - @furious programming

1
class osoba
    {
        public string imie { get; set; }
        public string nazwisko { get; set; }
        public List<int> lista { get; set; }
    }

    class przyklad
    {
        public List<osoba> ludzie { get; set; }

        public przyklad()
        {
            ludzie.Add(new osoba()
                {
                    imie = "tadeusz",
                    nazwisko = "nowak",
                    lista = new List<int>
                    {
                        10, 20, 30
                    }
                });
        }

        public int jakasMetoda()
        {
            return ludzie[0].lista[2]; //zwroci 30
        }
    }

Taki przyklad na szybciora;)

0

takie błąd napotkałem

An unhandled exception of type 'System.NullReferenceException' occurred in lista2.exe

Additional information: Object reference not set to an instance of an object.

zamiana znacznika <quote> na <code class="none"> - @furious programming

0

ludzie jest nullem, zapomnialem zainicjowac gdzies. Dodaj przed dostepem do tej zmiennej:

ludzie = new List<int>()

Ewentualnie mozesz tez ta liste wypelnic przy definicji:

ludzie = new List<osoba>() { 
                new osoba()
                {
                    imie = "tadeusz",
                    nazwisko = "nowak",
                    lista = new List<int>
                        {
                            10, 20, 30
                        }
                },
                new osoba()
                {
                    imie = "zenek",
                    nazwisko = "kowalski",
                    lista = new List<int>
                        {
                            1,2,3
                        }
                }
            };
0

Jeszcze jedno pytanie, a jak teraz bym chciał dodać do tej listy liczb jakąś liczbę dla istniejącej już osoby ? Próbowałem takie coś :

ludzie[0].lista = new List<int>(100);
MessageBox.Show(ludzie[0].lista[3].ToString());

Ale napotykam błąd.

Już rozwiązałem problem

ludzie[0].lista.Add(5);
MessageBox.Show(ludzie[0].lista[3].ToString());

dodanie znaczników <code class="csharp"> - @furious programming

0

OMG

ludzie[0].lista.Add(5);

dodanie znacznika <code class="csharp"> - @furious programming

0

Napisz sobie metody opakowujące tę listę, żebyś nie musiał pisać ludzie[0].lista.Add(5)tylko ludzie[0].ZapiszLiczbe(5). Sama zaś lista może być prywatnym polem, a nie publiczną właściwością.

1 użytkowników online, w tym zalogowanych: 0, gości: 1