public T this[params T1[] value]

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von Facebamm.

    public T this[params T1[] value]

    Hallo zusammen,

    ich bin gerade auf etwas gestoßen, was so nicht wusste, das es geht und nun mich über die Verwendung wundere.

    Example:

    C#-Quellcode

    1. public class Example<T> {
    2. public T[] Values { get; set; }
    3. public T[] this[params T[] values] {
    4. get => Values;
    5. set => Values = values;
    6. }
    7. }
    8. //using
    9. Example<int> exampleObj = new Example<int>();
    10. //Error: Schweregrad Code Beschreibung Projekt Datei Zeile Unterdrückungszustand
    11. //Fehler: CS0201 Nur assignment-, call-, increment-, decrement- und new object-Ausdrücke können als Anweisung verwendet werden.
    12. exampleObj[1, 3];
    13. ///work
    14. exampleObj[1,2,3,4,5] = null;


    Kann mir jm. evtl mehr dazu erklären, wie man das verwenden sollte, bzw. kann Oo?
    Über welchen Teil genau wunderst du dich?
    Die indizierte Property?
    Das params?
    Dass du festlegen kannst, was mit der indizierten property passiert?
    Dass Generika damit funktionieren?
    Alles zusammen?

    Achja dein erstes Beispiel funktioniert, wenn du es auch irgendwo zuweist. Du kannst jede Property einfach in den Code schreiben und bekommst den Fehler.

    Edit: @Facebamm
    Der Indexer ist etwas komisch, entweder man überschreibt das bestehende Array mit den Werten, den man in den index schreibt, oder bekommt das ganze Array, komplett unabhängig von dem, was man als "index" angibt.

    Viel interessanter finde ich da schon das hier:

    C#-Quellcode

    1. public class Example<T>
    2. {
    3. public T[] Values { get; set; }
    4. public T[] this[params int[] values]
    5. {
    6. get
    7. {
    8. T[] temp = new T[values.Length];
    9. for (int i = 0; i < values.Length; i++)
    10. {
    11. temp[i] = Values[values[i]];
    12. }
    13. return temp;
    14. }
    15. }
    16. }

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „EaranMaleasi“ ()