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.

Code: Select all

gange(num1, num2)
Og så kalde den

Code: Select all

gange(2, 2);

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.

Code: Select all

gange(num1, num2)
Og så kalde den

Code: Select all

gange(2, 2);

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 :D

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