C# Beispiel für If Anweisung in C#

Eilo

Cadet 1st Year
Registriert
Nov. 2009
Beiträge
8
Hallo,

Ich benötige ein paar Zeilen C# um mir in der Software Eisbär für KNX einen Multikonverter zu programmieren. Und da ich keinen Plan von C# habe brauche ich eure Hilfe!

Ich habe einen Eingang (BOOL) und einen Ausgang (INT, sohrt INT?).

Was ich möchte, ist dass der Ausgang eine 1 liefert, wenn der Eingang auch TRUE ist, nur eben als anderen Datentyp.
Also irgendwas in der Art:

If Eingang=TRUE
then
Ausgang=00000001
else
Ausgang=00000000

Ich denke das ist nichts schweres, aber wie gesagt ich habe keine Ahnung.

Gruß Eilo
 
Darf man Fragen, warum du keine Suchmaschine benutzt?
Ginge deutlich schneller als ein Forenthread zu erstellen und auf Antwort zu warten.
 
private int foo(bool bar)
{
if(bar == true)
return 0x1;
else
return 0x0;
}
 
Danke für die schnellen Antworten.

Digital Illusion seine Antwort scheint mir gut, funktioniert jedoch leider nicht wenn ich den Code in dem Multikonverter eingebe.

Habe es auf meinen Bedarf wie folgt angepasst:

private int foo(bool Eingang001)
{
if(Eingang001 == true)
return 0x1;
else
return 0x0;
}


Muss ich bei der Lösung von Agyss nicht noch die ariablen als BOOL bzw. Int deklarieren?
 
Ich kenne Agyss Multikonverter nicht. Du wolltest in C Sharp eine Methode, die aus einem BOOL nen INTeger macht.

Was ist das, Agyss Multikonverter ?
 
Aggys ist ein USER der mir weiter oben geantwortet hat ;)

Und das mit den Syntax ist auch ganz wichtig. Wenn die oder nicht vorhanden sind wird es ja wahrscheinlich nicht funktionieren oder?
 
hhhmmhhhmm, kannst Du den mal beschreiben, was der Multikonverter so alles können soll ?
 
Multikonverter.PNGAlso der Multikonverter ist ein Baustein, dem man beliebig viele Ein- und Ausgänge geben kann.
In welcher Abhängigkeit diese Ein- und Ausgänge dann arbeiten, wird durch den hinterlegten Programmcode bestimmt.

Ich möchte in diesem Fall, dass ein Energieaktor schaltet, wenn der Eingang(BOOL) TRUE ist.
Der Energieaktor benötigt jedoch ein 8 Bit Telegramm.
Um also aus dem 1 Bit ein 8Bit-Telegramm zu machen nutze ich den Multikonverter.

Verständlich?
 
Zuletzt bearbeitet:
was auch gehen würde:

private sbyte foo(bool bar)
{
return Convert.ToSByte(bar);
}
 
Zuletzt bearbeitet:
Habe jetzt oben noch ein Bild editiert. Vllt wirds dadurch verständlicher.

Ich glaube ich müsste anstelle von "return" aber noch explizit das Ergebnis dem Ausgang zuordnen.
Ergänzung ()

Also der Code funktioniert auch. Jetzt müsste doch folgendes auch funktionieren oder?

private sbyte foo(bool Eingang001)
{
Ausgang001 == Convert.ToSByte(Eingang001);
}

???????
 
Multikonverter, was es Alles gibt... Keine Ahnung, ich bin baff vom Multikonverter. Ich habe Visual Studio 2010...

Wenn irgendwas nicht klappt, ist vielleicht der Parser Schuld.

Eine einfache Alternative:

int foo(bool bar)
{
int back=0;
if(bar)
back=1;
else
back=0;
return back;
}
 
Wie gesagt: Der vorige Code von dir funktioniert soweit.

Jetzt würde mich noch interessieren wie ich den SByte-Wert einer Variable zuordne!
 
Globale Variablen deklarierst und definierst die vielleicht auch noch ausserhalb von Funktionen oder Methoden:

Bspw.:

int back=0;

back= foo(true);

Lokale Variablen leben nur innerhalb einer Funktion oder Methode:

Bspw.:

int foo(bool bar)
{
int fluechtig;
for(fluechtig=0;fluechtig<1000;fluechtig++)
printf("Fluechtig stirbt nach 1000 Durchläufen");
}
 
Zuletzt bearbeitet:
würde sagen
Code:
private sbyte foo(bool Eingang001)
{
Ausgang001 == Convert.ToSByte(Eingang001);
}

ist soweit richtig, bis auf die tatsache das == keine zuweisung sondern ein vergleich ist.

versuchs mal mit

Code:
private sbyte foo(bool Eingang001)
{
Ausgang001 = Convert.ToSByte(Eingang001);
}

besser wäre natürlich wenn die funktion keine variablen auserhalb ihres Scopes verändert! Bnin mir eh net sicher ob das überhaupt geht. (c# letze mal vor 100 jahren gemacht, denke aber das gibt nen error wegen nicht deklarierter variablen)

Code:
Ausgabe001 = foo(Eingang001);

private sbyte foo(bool Eingang001)
{
    return Convert.ToSByte(Eingang001);
}

wobei da schon wieder die ganze funktion obsolet wird....

Das nun nicht böse gemeint, aber setz dich am besten doch mal ne stunde oder zwei hin und lies dir wenigsten die Grundlagen mal durch.

Was ist ein return wert? Wie weiße ich variablen werte zu? Was sind funktionen?
 
Zuletzt bearbeitet:
Zurück
Oben