(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original
Dieser Artikel wurde noch nicht bewertet - Dieses Thema bewerten.

Compilerfehler CS0246

Der Typ- oder Namespacename "Typ/Namespace" konnte nicht gefunden werden. (Fehlt eine using-Direktive oder ein Assemblyverweis?)

Es wurde kein Typ oder Namespace gefunden, der im Programm verwendet wird. Möglicherweise haben Sie vergessen, auf die den Typ enthaltende Assembly zu verweisen (/reference), oder Sie haben ihre Verwendung nicht ordnungsgemäß mit der using-Direktive qualifiziert.

Die folgenden Situationen verursachen den Compilerfehler CS0246.

  • Haben Sie den Namen des Typs oder Namespaces falsch geschrieben? Ohne den richtigen Namen kann der Compiler die Definition für den Typ oder Namespace nicht finden. Dies ist häufig der Fall, wenn im Namen des Typs eine falsche Groß-/Kleinschreibung verwendet wird. Beispielsweise wird der Fehler CS0246 durch Dataset ds; generiert, da das s in Dataset ein Großbuchstabe sein muss.

  • Wenn der Fehler bei einem Namespacenamen auftritt – haben Sie einen Verweis (/reference) auf die Assembly, die den Namespace enthält, hinzugefügt? Beispielsweise enthält der Code eventuell die Direktive using Accessibility. Wenn das Projekt jedoch nicht auf die Assembly Accessibility.dll verweist, wird der Fehler CS0246 gemeldet.

  • Wenn der Fehler für einen Typnamen gemeldet wird – haben Sie die die richtige using-Direktive bzw. den vollqualifizierten Namen des Typs angegeben? Betrachten Sie hierzu die folgende Deklaration: DataSet ds. Für die Verwendung des DataSet-Typs ist zweierlei erforderlich. Erstens benötigen Sie einen Verweis auf die Assembly, die die Definition für den Typ DataSet enthält. Zweitens benötigen Sie eine using-Direktive für den Namespace, in dem sich DataSet befindet. Wenn sich DataSet beispielsweise im Namespace System.Data befindet, ist am Anfang des Codes die folgende Direktive erforderlich: using System.Data.

    Die using-Direktive ist nicht erforderlich. Wenn Sie jedoch die Direktive auslassen und auf den DataSet-Typ verweisen, müssen Sie den vollqualifizierten Namen des Typs angeben. Für einen vollqualifizierten Typ geben Sie bei jedem Verweis auf den Typ im Code sowohl den Namespace als auch den Typ an. Wenn Sie im vorherigen Beispiel die using-Direktive weglassen, müssen Sie System.Data.DataSet ds schreiben, um ds anstelle von DataSet ds zu deklarieren.

  • Haben Sie eine Variable oder ein anderes Sprachelement verwendet, wenn ein Typ erwartet wurde? Wenn Sie beispielsweise in einer is-Anweisung ein Type-Objekt statt des tatsächlichen Typs verwenden, tritt der Fehler CS0246 auf.

  • Haben Sie eine using-alias-directive verwendet, ohne den vollqualifizierten Typnamen anzugeben? Eine using-alias-directive verwendet zum Auflösen von Typen keine using-Direktiven in der Quellcodedatei. Im folgenden Beispiel wird CS0246 generiert, da der Typ List<int> nicht vollqualifiziert ist. Der Fehler wird durch die using-Direktive für System.Collections.Generic nicht verhindert.

    using System.Collections.Generic;
    
    // The following declaration generates CS0246.
    using myAliasName = List<int>; 
    
    // To avoid the error, fully qualify List.
    using myAliasName2 = System.Collections.Generic.List<int>;
    
    
    

Im folgenden Beispiel wird CS0246 generiert, da eine erforderliche using-Direktive fehlt.

// CS0246.cs
//using System.Diagnostics;

public class MyClass
{
    // The following line causes CS0246. To fix the error, uncomment
    // the using directive for the namespace for this attribute,
    // System.Diagnostics.
    [Conditional("A")]
    public void Test()
    {
    }

    public static void Main()
    {
    }
}

Im folgenden Beispiel wird CS0246 generiert, da ein Objekt vom Typ Type verwendet wurde, obwohl der tatsächliche Typ erwartet wurde.

// CS0246b.cs
using System;

class ExampleClass
{
    public bool supports(object o, Type t)
    {
        // The following line causes CS0246. You must use an
        // actual type, such as ExampleClass, String, or Type.
        if (o is t)
        {
            return true;
        }
        return false;
    }
}

class Program
{
    public static void Main()
    {
        ExampleClass myC = new ExampleClass();
        myC.supports(myC, myC.GetType());
    }
}




Fanden Sie dies hilfreich?
(1500 verbleibende Zeichen)
Vielen Dank für Ihr Feedback.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft. Alle Rechte vorbehalten.