Использовать lang атрибут на входе. Locale на моем веб-приложении fr_FR, lang = "en_EN" на номере ввода, и я могу без разницы использовать запятую или точку. Firefox всегда отображает точку, Chrome показывает запятую. Но оба партнера действительны.
В .Net (v2 и более поздних версиях) есть несколько универсальных типов, которые очень упрощают передачу функций в качестве делегатов.
Для функций с возвращаемыми типами есть Func<>, а для функций без возвращаемых типов — Action<>.
И Func, и Action могут принимать от 0 до 4 параметров. Например, Func < double, int > принимает в качестве параметра один тип double и возвращает целое число. Действие < double, double, double > принимает в качестве параметров три значения типа double и ничего не возвращает (void).
Таким образом, вы можете объявить свою функцию Diff принимающей Func:
public double Diff(double x, Func<double, double> f) {
double h = 0.0000001;
return (f(x + h) - f(x)) / h;
}
И затем вы называете ее так, просто давая ей имя функции, которое соответствует сигнатуре вашей Func или Action:
double result = Diff(myValue, Function);
Вы можете даже напишите функцию в строке с лямбда-синтаксисом:
double result = Diff(myValue, d => Math.Sqrt(d * 3.14));