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

Permalänk
Inaktiv

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(); }

Permalänk
Medlem

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

Visa signatur

Stationär: Core i9 13900k | Asus X790 ROG Strix Gaming-F | 32GB DDR5 | RX 7900 XT | Lian Li PC-O11 dynamic evo
Laptop: Macbook Air | Apple M1

Permalänk
Medlem

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

Visa signatur

3900X, RX 6700 XT, 32gb RGB RAM.

Permalänk
Medlem

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.

Permalänk
Inaktiv
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

Permalänk
Inaktiv
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

Permalänk
Medlem
Skrivet av anon170706:

Ä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.

Permalänk
Inaktiv
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

Permalänk
Medlem
Skrivet av anon170706:

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);

Permalänk
Inaktiv
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(); } } }