Il n'existe pas de définition rigoureuse de "Langage OO", "Langage Fonctionnel", "Langue de la Procédure", on peut apporter des arguments que n'importe quelle langue s'adapte à presque n'importe quel classement; on peut écrire de procédure Java orienté objet C et fonctionnels de C++. Je l'utilise généralement une classification basée autour de ce que les principales caractéristiques sémantiques de soutien, ainsi que le développement commun de la pratique. Une bonne façon de voir les choses est d'examiner builtin populaire et de cadres, et de voir ce style qu'ils utilisent.
Les langages fonctionnels sont principalement définis comme des personnes ayant une fonction de classe primitives, avec des styles de développement qui utilisent ces pour réduire la complexité avec les expressions idiomatiques comme "la carte". Une autre caractéristique commune est la correspondance de modèle, mais je ne vois pas cela comme étant exclusivement fonctionnelle. "Pure" langages fonctionnels ont également pas d'effets secondaires, mais ce n'est pas obligatoire (voir comment floue de ces concepts? :).
Alors, qu'est-C#? Eh bien, il a d'abord fonction de classe de style primitives, avec des délégués (et a permis de mieux syntaxique de soutien pour le style avec les délégués anonymes et les lambdas). Est-il fonctionnel? Peut-être, si on écrit dans un style fonctionnel. Le Cadre de l'utilisation de ce style? Non, pas vraiment.
En tant que tel, je n'aurais pas de classe C# fonctionnelle dans la discussion générale -, il est, au mieux, multi-paradigme, avec une certaine saveur fonctionnelle.