Probleme bei Rückgabe von Variable durch Funktion

<nAZguL>

Grünschnabel
Hallo,

hab Heute angefangen mich in die C# Materie zu stürzen ( nach 2 Missglückten c++ Versuchen ). Habe recht gute PHP Kenntnisse, habe jetzt aber ein Problem mit einem kleinen C# Programm:
Code:
using System;

public class funct2
{
	public static void Main()
	{	
		double a, b, c;
		Console.Write("Laenge Seite A: ");
		a = Double.Parse(Console.ReadLine());
		Console.Write("Laenge Seite B: ");
		b = Double.Parse(Console.ReadLine())	;
		c = Pythagoras(a,b);
		Console.WriteLine("C ist {0} lang",c);
	}
	
	public double Pythagoras(double a,double b)
	{
		return Math.Sqrt(a*a + b*b);		
	}
}

Der Compiller sagt mir: " An object reference is required for the nonstatic field ..." für die Zeile wo die Variable c den Return wert aus der Pythagoras Funktion bekommen soll.
Wenn mir jemand helfen könnte und sagen könnte wo der Fehler liegt wäre ich sehr dankbar :)
 

Alexander Schuc

crazy-weasel
Hi.

Die Main Methode ist statisch.
Die Funktion nicht.

Das heisst, deine Funktion kannst du nur über eine Instanz der Klasse aufrufen, welche die Funktion enthält.

Lösung 1:

Du machst die Methode statisch. public static double Pythagoras(double a,double b)

Lösung 2:

Du instanzierst deine Klasse und rufst die Methode darüber auf.
(Die Änderungen sind fettgeschrieben..)
Code:
using System;

public class funct2
{
	public static void Main()
	{
		double a, b, c;
		funct2 obj = new funct2();

		ConsoleWrite("Laenge Seite A: ");
		a = Double.Parse(Console.ReadLine());
		Console.Write("Laenge Seite B: ");
		b = Double.Parse(Console.ReadLine());
		c = obj.Pythagoras(a,b);
		Console.WriteLine("C ist {0} lang",c);
	}

	public double Pythagoras(double a,double b)
	{
		return Math.Sqrt(a*a + b*b);
	}
}

MfG,

Alex