Ich habe diesen Code:Was ist das C# -Muster, um eine Aktion für eine Reihe von Werten auszuführen?
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Orange) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Orange, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Blue) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Blue, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Shift) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Shift, 0, 0);
if (PsionTeklogix.Keyboard.Keyboard.GetModifierKeyState(Key.Control) == KeyState.Lock)
PsionTeklogix.Keyboard.Keyboard.InjectKeyboardCommand(Function.Control, 0, 0);
...
und ich möchte den Code Refactoring den Schlüssel/Funktionsdefinition von den Aktionen zu trennen. Key.xxx und Function.xxx sind nicht vom selben Typ.
zB: in Python, habe ich einfach etwas tun könnte, wie:
keys = (
(Key.Orange, Function.Orange),
(Key.Blue , Function.Blue),
(Key.Shift , Function.Shift),
...
)
psi_key = PsionTeklogix.Keyboard.Keyboard
for key, func in keys:
if psi_key.GetModifierKeyState(key) == KeyState.Lock):
psi_key.InjectKeyboardCommand(func, 0, 0)
Was ist "der richtige Weg" in C# zu tun?
@Jimmy: Ich mag, wie Sie davon ausgehen, dass er davon ausgeht. Vielleicht ist er neu? In jedem Fall wird "for" in C# nicht tun, was er verlangt.Er muss 'foreach' verwenden. –
Ich wünschte, wir könnten Kommentare ablehnen, weil @Jimmy Hoffa hier nicht benötigt wird. – JonH
@Jimmy: Ich bin mir der foreach bewusst, aber ich suchte nach einer nicht-verbose Art, das anfängliche Array zu erstellen. Und ja, ich bin ein C# -Newbie (Entschuldigung) – PabloG