Sdílet prostřednictvím


Compilerfehler CS1954

Aktualisiert: November 2007

Fehlermeldung

Die beste Übereinstimmung für die überladene Methode 'Methode' für das Auflistungsinitialisiererelement kann nicht verwendet werden. Die 'Add'-Methoden von Auflistungsinitialisierern dürfen keine ref- oder out-Parameter haben.
The best overloaded method match 'method' for the collection initializer element cannot be used. Collection initializer 'Add' methods cannot have ref or out parameters.

Damit eine Auflistungsklasse mit einem Auflistungsinitialisierer initialisiert werden kann, muss die Klasse über eine publicAdd-Methode verfügen, die kein ref-Parameter oder out-Parameter ist.

So beheben Sie diesen Fehler

  • Wenn Sie den Quellcode der Auflistungsklasse ändern können, stellen Sie eine Add-Methode bereit, die keinen ref-Parameter oder out-Parameter verwendet.

  • Wenn Sie die Auflistungsklasse nicht ändern können, initialisieren Sie sie mit den von ihr bereitgestellten Konstruktoren. Sie können keinen Auflistungsinitialisierer mit der Klasse verwenden.

Beispiel

Im folgenden Beispiel wird Fehler CS1954 generiert, da die einzig verfügbare Überladung der Add-Liste in MyList über einen ref-Parameter verfügt.

// cs1954.cs
using System.Collections.Generic;
class MyList<T> : IEnumerable<T>
{
    List<T> _list;
    public void Add(ref T item)
    {
        _list.Add(item);
    }

    public System.Collections.Generic.IEnumerator<T> GetEnumerator()
    {
        int index = 0;
        T current = _list[index];
        while (current != null)
        {
            yield return _list[index++];
        }
    }

    System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator()
    {
        return GetEnumerator();
    }
}

public class MyClass
{
    public string tree { get; set; }
}
class Program
{
    static void Main(string[] args)
    {
        MyList<MyClass> myList = new MyList<MyClass> { new MyClass { tree = "maple" } }; // CS1954
    }
}

Siehe auch

Referenz

Objekt- und Auflistungsinitialisierer (C#-Programmierhandbuch)