Me parece que estas mezclando un par de cosas:
Primero tienes dos condicionales en una sola linea
a == 0 ? (Action)metodo1 : (codigo)
y ...
a > 0 ? (Action)metodo2)();
el segundo. Y como puedes ver al segundo le falta una parte ": (codigo)".
Minimamente deberia ser:
a == 0 ? (Action)metodo1 : a > 0 ? (Action)metodo2 : (Action)metodo3;
Asumiendo que metodo1, metodo2 y metodo3 se puede castear a Action
Otro gran problema que veo en el código es el muy mal uso de los parentesis, no entiendo como no te da error de sintaxis ese codigo.
Finalmente creo que este código funcionaria de la siguiente forma:
Código C++:
Ver originalusing System.IO;
using System;
class Program
{
static void Main()
{
int a = 9;
// Read in every line in the file.
Action example1 = () => Console.WriteLine("Example1");
Action example2 = () => Console.WriteLine("Example2");
Action example3 = () => Console.WriteLine("Example3");
// Call the anonymous methods.
(a == 0 ? (Action)example1 : a > 0 ? (Action)example2 : (Action)example3).Invoke();
}
}
La salida por consola es: "Example2"
Ah otra cosa! Los cast a Action son opcionales