Page 1 of 1
Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 13:15
by Herbstein
Hej
Jeg er en N00B, når det gælder programmereing. Jeg har tænkt mig at begynde at lave funktioner, og kan godt finde ud af det i JavaScript. Men når jeg prøver i C#, får jeg bare errors. Det er også, selvom jeg tager kode fra nettet (Tutorials). Kunne en af jer ikke komme med nogle simple eksempler på at kalde/lave en funktion ie.
Og så kalde den
Tak på forhånd
Rasmus
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 13:24
by Code
Herbstein wrote:Hej
Jeg er en N00B, når det gælder programmereing. Jeg har tænkt mig at begynde at lave funktioner, og kan godt finde ud af det i JavaScript. Men når jeg prøver i C#, får jeg bare errors. Det er også, selvom jeg tager kode fra nettet (Tutorials). Kunne en af jer ikke komme med nogle simple eksempler på at kalde/lave en funktion ie.
Og så kalde den
Tak på forhånd
Rasmus
Det er noget tid siden jeg har rodet med at arbejde ren c# hvor det ikke var i Unity, (kan ikke huske om funktioner står anerledes, men burde vist ikke være forskel) hvis man skulle gøre det i Unity:
Code: Select all
float Gange(float a, float b)
{
return a*b;
}
print(Gange(2,2));
Funktionen her hedder "float" først fordi den returnere en float når man kører den (hvilket er givet ved at return a*b).
Derefter printer man bare det man skal have ganget ved at kører funktionen Gange(tal1, tal2);
I visual studio er det nok Console.print eller lignende.
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 13:33
by Herbstein
Hej Code
Svaret ser rigtigt ud, men det giver fem fejl
Kode:
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
float Gange(float a, float b)
{
return a*b;
}
Print(Gange(2, 2));
}
}
}
Fejlene:
1: } expected
2: Method must have a return type
3: Identifier expected
4: Type or namespace definition, or end of file expected
5: 'ConsoleApplication1.Program.Gange(float, float)' is a 'method' but is used as a 'type'
Det undrer mig meget, kan du ikke prøve at teste i Visual express, det bare er mig? Har prøvet at have funktionen-kaldet over og funktion deklerationen
Rasmus
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 14:25
by mattsson
Herbstein wrote:Hej Code
Svaret ser rigtigt ud, men det giver fem fejl
Kode:
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
float Gange(float a, float b)
{
return a*b;
}
Print(Gange(2, 2));
}
}
}
Fejlene:
1: } expected
2: Method must have a return type
3: Identifier expected
4: Type or namespace definition, or end of file expected
5: 'ConsoleApplication1.Program.Gange(float, float)' is a 'method' but is used as a 'type'
Det undrer mig meget, kan du ikke prøve at teste i Visual express, det bare er mig? Har prøvet at have funktionen-kaldet over og funktion deklerationen
Rasmus
Du skal deklarere dine metoder uden for Main, dvs.:
Code: Select all
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Print(Gange(2, 2));
}
float Gange(float a, float b)
{
return a*b;
}
}
}
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 14:36
by Herbstein
Så får jeg en fejl der hedder: An object reference is required for the non-static field, method or property 'ConsoleApplication1.Program.Gange(float, float)'
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 15:08
by mattsson
Du kan ikke kalde en non-static metode fra en static metode. Du kan enten gøre Gange() static:
Code: Select all
static float Gange(float a, float b)
{
return a*b;
}
Eller du kan initialisere et objekt af klassen og kalde Gange() derigennem, dvs.
Code: Select all
Program myProgram = new Program();
print(myProgram.Gange(2, 2));
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 15:40
by Herbstein
mattsson wrote:Du kan ikke kalde en non-static metode fra en static metode. Du kan enten gøre Gange() static:
Code: Select all
static float Gange(float a, float b)
{
return a*b;
}
Det var det, der var brug for
Tak for hjælpen, også til Code.
Re: Kan ikke kalde en funktion [C#]
Posted: 17 Apr 2013, 15:53
by mattsson
Det var så lidt.
http://dotnetperls.com er en rigtig god side, hvis man sidder fast med C#.