The name 'x' does not exist in the current context.

Trädvy Permalänk
Medlem
Registrerad
Maj 2011

The name 'x' does not exist in the current context.

Har en skoluppgift (övning) som jag inte lyckas få att köra.
Ska väl tillägga att jag i princip copypaste vad läraren skrev när vi gick igenom uppgiften.

Jag hittar inget fel i alla fall. Så tänkte att någon här kanske kunde vägleda lite.

Felet jag får är alltså att instansmetoden "CompanyMerger" inte finns, när jag försöker ropa på den i main metoden. Men den finns, och ser inget fel i det jag skrivit. Och som jag sa. både instansmetoden och anropet i mainmetoden är EXAKT likadant ut som läraren skrev och när han körde sitt så fungerade det. Well, i alla fall ser jag inga skillnader när jag jämför. Så antagligen är det något annat som är fel i koden(?)

Så här ser i alla fall koden ut:

namespace lektion8.övning2 { class Company { public string name; public string city; public int age; public Company CompanyMerger(Company c1, Company c2) { Company c3 = new Company { name = c1 + "-" + c2, age = 0, city = city }; return c3; } } class Program { static void Main(string[] args) { Console.Write("Enter the name of the first company: "); string old1 = Console.ReadLine(); Console.Write("´Now enter where the company are located: "); string location1 = Console.ReadLine(); Console.Write("Enter how old the company are: "); int age1 = int.Parse(Console.ReadLine()); Console.WriteLine(); Console.Write("Now enter the name of the second company: "); string old2 = Console.ReadLine(); Console.Write("Enter where the company are located: "); string location2 = Console.ReadLine(); Console.Write("Enter the age of the company: "); int age2 = int.Parse(Console.ReadLine()); Company firstCompany = new Company { name = old1, city = location1, age = age1 }; Company secondCompany = new Company { name = old2, city = location2, age = age2 }; Company newCompany = CompanyMerger(firstCompany, secondCompany); Console.WriteLine(newCompany); Console.WriteLine(); Console.Write("Press any key to exit..."); Console.ReadKey(); }

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Okt 2008

CompanyMerger ligger i en annan klass, se över hur du anropar metoden

Dator 1: i7 5820k | Asus X99-S | 16GB DDR4 | GTX 1080ti SLI | NZXT H440
Dator 2: i7 5820k | Asrock X99M | 32GB DDR4 | GTX 970 | SC-512N1-L Capture Card | Fractal Design Node 804
Dator 3: i5 2500 | Asus P8Z77-M | 8GB DDR3 | Fractal Design r3
Dator 4: Macbook Pro 2017 | i5 7360U | 8GB DDR3

Trädvy Permalänk
Medlem
Plats
Den mindre gnälliga delen av gnällbältet
Registrerad
Apr 2005

CompanyMerger är en del av Company klassen. Du måste använda en instans av company för att kunna köra funktionen. Exempelvis firstCompany eller newCompany

Väntar på att jag ska börja montera Ryzen 3000.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Aug 2013

Det ovan har skrivit är korrekt, så har inte mer att tillföra.
Men jag kan tillägga att om man ska vara petig och följa OOP så bör inte CompanyMerger ligga i Company.
Company beskriver ett företag, den klassen behöver inte veta hur man "mergar" ihop företag.
Istället bör du ha en tredje klass för CompanyMerger som t.ex. har en metod för Merge.

Trädvy Permalänk
Medlem
Registrerad
Maj 2011
Skrivet av MaxieTheHatter:

CompanyMerger ligger i en annan klass, se över hur du anropar metoden

Jag vet. Och anropar den ju så här:
Company newCompany = CompanyMerger(firstCompany, secondCompany);

Ser inget fel i det. (Särskilt inte eftersom det var så läraren skrev och då rullade det.

Sen skrev läraren även så här, för art visa att båda sätten fungerar:
Company newCompany = first Company.CompanyMerger(firstCompany, secondCompany);

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Registrerad
Maj 2011
Skrivet av brainlessbob:

CompanyMerger är en del av Company klassen. Du måste använda en instans av company för att kunna köra funktionen. Exempelvis firstCompany eller newCompany

Är det inte det jag gör med detta?
Company newCompany = CompanyMerger(firstCompany, secondCompany);

Skickades från m.sweclockers.com

Trädvy Permalänk
Medlem
Registrerad
Sep 2005
Skrivet av tqila:

Är det inte det jag gör med detta?
Company newCompany = CompanyMerger(firstCompany, secondCompany);

Skickades från m.sweclockers.com

Nej du skapar inte en instans av Company på den raden.

Trädvy Permalänk
Medlem
Registrerad
Maj 2011
Skrivet av Squallie:

Nej du skapar inte en instans av Company på den raden.

När jag googlar så är det precis så som man gör.

Eller skillnaden ligger väl i att den raden skapar en ny instans som har värdena som tas fram av metoden MergeCompany, som ligger i klassen Company. Istället för att ta fram en helt tom instans som man lägger in värden själv i. Det är i alla fall vad jag får fram när jag googlar..

Vad menar du är fel med den?

Säg att jag lägger in detta också:

Company newCompany = new Company();

Då säger den att newCompany redan är definierad. Och kan således inte använda den för att hämta data från metoden i Company-klassen.
Då får jag lägga in ett annat namn där, och då är vi tillbaka till ruta ett.

Här är en, om än duktig irriterande, tutorial om hur man gör en instans av en klass. Och tycker mig gjort likadant, men hämtar värden istället för att ange värden.
https://www.youtube.com/watch?v=2T4jY_YDpF4

Trädvy Permalänk
Medlem
Registrerad
Sep 2010
Skrivet av tqila:

När jag googlar så är det precis så som man gör.

Eller skillnaden ligger väl i att den raden skapar en ny instans som har värdena som tas fram av metoden MergeCompany, som ligger i klassen Company. Istället för att ta fram en helt tom instans som man lägger in värden själv i. Det är i alla fall vad jag får fram när jag googlar..

Vad menar du är fel med den?

Säg att jag lägger in detta också:

Company newCompany = new Company();

Då säger den att newCompany redan är definierad. Och kan således inte använda den för att hämta data från metoden i Company-klassen.
Då får jag lägga in ett annat namn där, och då är vi tillbaka till ruta ett.

Här är en, om än duktig irriterande, tutorial om hur man gör en instans av en klass. Och tycker mig gjort likadant, men hämtar värden istället för att ange värden.
https://www.youtube.com/watch?v=2T4jY_YDpF4

Eftersom CompanyMerger metoden lever inuti Company-klassen så kan du inte anropa CompanyMerger direkt i Main() funktionen då Main är en del av Program-klassen och inte är en del av Company-klassen. Du behöver använda en referens av Company-klassen för att sedan anropa metoden som finns på klassen.

ex:

Company newCompany = secondCompany.CompanyMerger(firstCompany, secondCompany);

Trädvy Permalänk
Medlem
Registrerad
Maj 2011
Skrivet av laht:

Eftersom CompanyMerger metoden lever inuti Company-klassen så kan du inte anropa CompanyMerger direkt i Main() funktionen då Main är en del av Program-klassen och inte är en del av Company-klassen. Du behöver använda en referens av Company-klassen för att sedan anropa metoden som finns på klassen.

ex:

Company newCompany = secondCompany.CompanyMerger(firstCompany, secondCompany);

Jag gjorde om koden lite och fick det att fungera till slut. Men tack ändå för förslaget!

Så här blev det till slut:

namespace lektion8.övning2 { class Company { public string name; public string city; public int age; public Company CompanyMerger(Company c1) { Company c3 = new Company { name = name + "-" + c1.name, age = 0, city = city }; return c3; } } class Program { static void Main(string[] args) { Console.Write("Enter the name of the first company: "); string old1 = Console.ReadLine(); Console.Write("Now enter where the company are located: "); string location1 = Console.ReadLine(); Console.Write("Enter how old the company are: "); int age1 = int.Parse(Console.ReadLine()); Console.WriteLine(); Console.Write("Now enter the name of the second company: "); string old2 = Console.ReadLine(); Console.Write("Enter where the company are located: "); string location2 = Console.ReadLine(); Console.Write("Enter the age of the company: "); int age2 = int.Parse(Console.ReadLine()); Company firstCompany = new Company { name = old1, city = location1, age = age1 }; Company secondCompany = new Company { name = old2, city = location2, age = age2 }; Company newCompany = firstCompany.CompanyMerger(secondCompany); Console.WriteLine(); Console.WriteLine("The merged company are now named " + newCompany.name + " and are based in " + newCompany.city + ". Its age is now " + newCompany.age); Console.WriteLine(); Console.Write("Press any key to exit..."); Console.ReadKey(); } } }