Dies ist mein Programm, das die Klasse verwendet. Es heißt Time2. Ich habe die Referenz zu TimeTest hinzugefügt. Ich erhalte immer wieder den Fehler 'Time2' ist ein 'Namespace', wird aber wie ein 'Typ' verwendet.
Könnte mir bitte jemand sagen, was dieser Fehler ist und wie er behoben werden kann?
namespace TimeTest
{
class TimeTest
{
static void Main(string[] args)
{
Time2 t1 = new Time2();
}
}
}
c#
class
namespaces
Das Ass
quelle
quelle
Time2
dieser Frage wirklich eine (abgespeckte) Erklärung hinzufügen , da dort wahrscheinlich das Problem liegt. Höchstwahrscheinlich haben SieTime2
in einem Namespace namensTime2
Antworten:
Ich vermute, Sie haben mindestens zweimal das gleiche Problem .
Hier:
namespace TimeTest { class TimeTest { }
... Sie deklarieren einen Typ mit demselben Namen wie der Namespace, in dem er sich befindet. Tun Sie das nicht.
Jetzt haben Sie anscheinend das gleiche Problem mit
Time2
. Ich vermute, wenn Sie hinzufügen:using Time2;
In Ihre Liste der
using
Anweisungen wird Ihr Code kompiliert. Aber bitte, bitte, bitte beheben Sie das größere Problem: die problematische Wahl der Namen. (Folgen Sie dem Link oben, um mehr darüber zu erfahren, warum dies eine schlechte Idee ist.)(Außerdem würde ich Ihnen raten, dies nicht zu tun, es sei denn, Sie sind wirklich daran interessiert, zeitbasierte Typen zu schreiben ... und ich sage dies als jemand, der genau das tut . Verwenden Sie die integrierten Funktionen oder eine dritte Partybibliothek wie, ähm, meine . Die korrekte Arbeit mit Datum und Uhrzeit ist überraschend haarig. :)
quelle
namespace TestApplication // Remove .Controller { public class HomeController : Controller { public ActionResult Index() { return View(); } } }
Entfernen Sie das Controller-Wort aus namepsace
quelle
Wenn Sie an einer großen App arbeiten und keine Namen ändern können, können Sie a
.
eingeben, um den gewünschten Typ aus dem Namespace auszuwählen:namespace Company.Core.Context{ public partial class Context : Database Context { ... } } ... using Company.Core.Context; someFunction(){ var c = new Context.Context(); }
quelle
Bitte überprüfen Sie, ob Ihr Klassen- und Namespace-Name identisch ist ...
Es passiert, wenn der Namespace und der Klassenname identisch sind. Machen Sie eine Sache, schreiben Sie den vollständigen Namen des Namespace, wenn Sie den Namespace verwenden möchten.
using Student.Models.Db; namespace Student.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { List<Student> student = null; return View(); } }
quelle
Ich hatte dieses Problem, als ich eine Klasse "Response.cs" in einem Ordner mit dem Namen "Response" erstellte. Also fing VS den
new Response ()
als Ordner / Namespace ab.Also habe ich den Klassennamen in StatusResponse.cs geändert und angerufen.
new StatusResponse()
Dadurch wurde das Problem behoben.quelle
Alle Antworten geben die Ursache an, aber manchmal besteht das größere Problem darin, alle Stellen zu identifizieren, die einen falschen Namespace definieren. Mit Tools wie Resharper, die den Namespace mithilfe der Ordnerstruktur automatisch anpassen, kann dieses Problem leicht auftreten.
Sie können alle Zeilen abrufen, die das Problem verursachen, indem Sie in Projekt / Lösung mit dem folgenden regulären Ausdruck suchen:
namespace .+\.TheNameUsedAsBothNamespaceAndType
quelle
wenn der Fehler ist
Zeile 26:
Zeile 27: @foreach (Kunden Kunde im Modell) Zeile 28: {Zeile 29:
Geben Sie den vollständigen Namensraum
wie @foreach an (Start.Models.customer-Kunde in Model).
quelle