Основная проблема - помимо того, что она небезопасна, ненужна и, вероятно, нечитаема в большинстве реальных случаев, - заключается в том, что она продвигает модель программирования, которую большинство людей в наши дни сочли бы плохой.
Большинство языков имеют стили программирования / дизайна, которые они разрешают, и те, которые они хотят продвигать. C # допускает императивное и процедурное программирование, но способствует использованию объектно-ориентированных методов. Ваш оператор твердо принадлежит к первому лагерю и это не то, что разработчики языка хотели бы поддержать.
Если вы хотите программировать в этом стиле, вы можете использовать:
myValue = (f == Fruit.apple) ? fnApple()
: (f == Fruit.mango) ? fnMango()
: fnOrange();