Przepraszam za zwłokę, ale byłem na działce a tam komputer przegrywa z naturą ;)
Odpowiem na tyle ile wiem, przydalby sie tutaj @somekind czy @katelx
tlumaczac na polski o co chodzi w zdaniu
direct array access via square-brackets and the field specifier dot. Note that, in .NET, arrays are a special and unique primitive of the Common Type System. As @Ani mentions above, this syntax cannot be used to change an individual field of a reference instance, such as a list, even when it is parameterized with a value-type
Bezposredni dostep do tablicy za pomoca [] oraz pola za pomoca kropki. Zwroc uwage na to ze w .NET tablice sa specjalnym i unikalnym prymitywem z podstawowym typow w System. Jak Ani wspomnial powyzej, ten kod nie moze byc uzyty by zmienic pojedyncze pole jako referencje obiektu, jak na przyklad lista, nawet gdy jest to okreslony typ jako value
W C# mamy reference oraz value, value zawsze sa kopiowane a reference zawsze przekazywane bezposrednio. Na dobra sprawe to co robi, to C# juz to robi (jako ze obiekt jest typem referencyjnym oraz tablica takze). Musialbym sprawdzic jak to dziala na kompilatorze, ale wydaje mi sie ze do funkcji bedzie przekazana referencja obiektu, wiec nie ma sensu tam robic ref
Chodzi o coś takiego?
public struct Foo {
public List< int > lstInt;
public int value;
public Foo( int list_capacity ) { this.value = 0; this.lstInt = new List<int>(list_capacity); }
}
static void SomeFunc() {
Foo foo1(16);
Foo foo2 = foo1;
}
I mimo, że Foo jest value-type to zarówno foo1 jak i foo2 nie będą miały własnych list tylko będą 'wspołdzieliły' jedną?
- Nie ma nic w dokumentacji by zapewnial ze beda obok siebie. Wiec nie mozesz zalozyc ze beda obok siebie. Zapewne beda. Nie jestem pewien czy Ms udostepnil zrodla jezeli chodzi o System.Generics.Collection. Poszukaj na githubie i po prostu sprawdz ;)
Najprostsze rozwiązania są najlepsze. Czemu nie wpadłem na to, żeby po prostu poszukać kodu? Heh.
Chociaz dlaczego potrzebujesz by byly obok siebie? Mozna wiedziec co probujesz osiagnac?
Póki co nic konkretnego. Staram się zaprzyjaźnić z C#i poznać jego mechanizmy ;)
- Z tego co pamietam to tak
Hmm... a takie coś?
public struct Foo : IComparable< Foo > { /* ... */ }