To jest mój program, którego używa klasa nazywa się Time2 Mam odniesienie dodane do TimeTest Ciągle otrzymuję Błąd „Time2” to „przestrzeń nazw”, ale jest używany jak „typ”
Mógłby ktoś mi powiedzieć co to za błąd i jak to naprawić?
namespace TimeTest
{
class TimeTest
{
static void Main(string[] args)
{
Time2 t1 = new Time2();
}
}
}
c#
class
namespaces
TheAce
źródło
źródło
Time2
do tego pytania, ponieważ prawdopodobnie na tym polega problem. Najprawdopodobniej zostałeśTime2
zdefiniowany w przestrzeni nazw o nazwieTime2
Odpowiedzi:
Podejrzewam, że masz ten sam problem co najmniej dwa razy .
Tutaj:
namespace TimeTest { class TimeTest { }
... deklarujesz typ o tej samej nazwie, co przestrzeń nazw, w której się znajduje. Nie rób tego.
Teraz najwyraźniej masz ten sam problem z
Time2
. Podejrzewam , że jeśli dodasz:using Time2;
do listy
using
dyrektyw, twój kod zostanie skompilowany. Ale proszę, proszę, rozwiąż większy problem: problematyczny wybór nazw. (Kliknij powyższy link, aby dowiedzieć się więcej o tym, dlaczego to zły pomysł).(Dodatkowo, jeśli nie jesteś naprawdę zainteresowany pisaniem typów opartych na czasie, radziłbym ci tego nie robić ... i mówię to jako osoba, która robi dokładnie to. Użyj wbudowanych możliwości lub trzeciej Biblioteka imprezowa, taka jak moja . Praca z datami i godzinami jest zaskakująco owłosiona. :)
źródło
namespace TestApplication // Remove .Controller { public class HomeController : Controller { public ActionResult Index() { return View(); } } }
Usuń słowo kontrolera z przestrzeni nazw
źródło
Jeśli pracujesz nad dużą aplikacją i nie możesz zmienić żadnych nazw, możesz wpisać a,
.
aby wybrać żądany typ z przestrzeni nazw:namespace Company.Core.Context{ public partial class Context : Database Context { ... } } ... using Company.Core.Context; someFunction(){ var c = new Context.Context(); }
źródło
Miałem ten problem, gdy utworzyłem klasę „Response.cs” w folderze o nazwie „Response”. Więc VS przechwytywał
new Response ()
as Folder / przestrzeń nazw.Więc zmieniłem nazwę klasy na StatusResponse.cs i zadzwoniłem.
new StatusResponse()
To rozwiązało problem.źródło
Wszystkie odpowiedzi wskazują przyczynę, ale czasami większym problemem jest zidentyfikowanie wszystkich miejsc, które definiują niewłaściwą przestrzeń nazw. Dzięki narzędziom takim jak Resharper, które automatycznie dostosowują przestrzeń nazw za pomocą struktury folderów, raczej łatwo jest napotkać ten problem.
Możesz uzyskać wszystkie wiersze, które tworzą problem, wyszukując w projekcie / rozwiązaniu za pomocą następującego wyrażenia regularnego:
namespace .+\.TheNameUsedAsBothNamespaceAndType
źródło
Sprawdź, czy nazwa klasy i przestrzeni nazw jest taka sama ...
Dzieje się tak, gdy przestrzeń nazw i nazwa klasy są takie same. zrób jedną rzecz, napisz pełną nazwę przestrzeni nazw, gdy chcesz jej użyć.
using Student.Models.Db; namespace Student.Controllers { public class HomeController : Controller { // GET: Home public ActionResult Index() { List<Student> student = null; return View(); } }
źródło
jeśli błąd to
Wiersz 26:
Wiersz 27: @foreach (klient klienta w modelu) Wiersz 28: {Wiersz 29:
podaj pełną nazwę,
taką jak @foreach (Start.Models.customer customer in Model)
źródło