Premiär! Fyndchans i SweClockers Månadens Drop

C# The name "..." does not exist in the current context

Permalänk
Medlem

C# The name "..." does not exist in the current context

Hej!

Har kört fast här, jag får följande felmeddelande i min do / while loop och undrar varför?
Varför lyckas jag inte ankalla "celsius" i min while?

Permalänk
Medlem

Du måste deklarera den utanför do-while loopen. while kommer inte åt den för att den ligger innanför do's måsvingar.

Permalänk
Hedersmedlem

"celcius" existerar bara innanför det block som du deklarerade den, vilket är innan för do { }. Trots att while()-delen hänger ihop med den så finns variabeln inte där.
Du kan lösa det genom att deklarera den innan loopen, dvs på första raden i Main(), med ett tillfälligt värde som 0, och sedan ändra värden inuti loopen.

Tänk också efter på om du verkligen vill loopa så länge som celsius == 73.

Visa signatur

Asus ROG STRIX B550-F / Ryzen 5800X3D / 48 GB 3200 MHz CL14 / Asus TUF 3080 OC / WD SN850 1 TB, Kingston NV1 2 TB + NAS / Corsair RM650x V3 / Acer XB271HU (1440p165) / LG C1 55"
Mobil: Moto G200

Permalänk
Medlem

Du måste definera celcius variablen utanför innan "do".
koden i while känner inte till de variablar som har definerats i do. Di måste ligga i ett gemensamt kodblock, trädstrukrmässigt. Så skriv "int celcius = 0" efter main men innan do, så fungerar det.

Permalänk
Medlem

Tack snälla för svar.
Min första tanke var också att sätta int celsius = 0 innan do satsen. Men då kan jag inte använda int celsius i min do sats? Misstänker att det kanske har att göra med att jag använder 2 metoder i detta fallet?

Permalänk

Om du tittar på raden med felmeddelandet och tänker till så ser du säkert felet.
Tips, hur tilldelar du en redan deklarerad variabel ett värde?

Permalänk
Medlem

@areyouin: Nu deklarerar du celsius både utanför och innuti loopen. C# tillåter av någon anledning inte att man deklarerar en variabel med samma namn som en variabel i ett yttre block, så du får därför ett fel. Men även om det hade gått bra så hade koden inte gjort vad du vill, eftersom celsius innuti loopen refererar till variabeln innuti do-blocket medan celsius i while-villkoret refererar till variabeln utanför blocket.

Lösningen är att helt enkelt ta bort int före celsius innuti do-blocket, så att du bara tilldelar variabeln och inte deklarar den.

Permalänk

Låt TS tänka lite själv också.