Я знаю, что вы можете сделать перегрузку оператора (+ - * /) для пользовательского типа.Есть ли способ сделать то же самое для пользовательских математических функций?Это сделало бы векторную работу более естественной (как в R).Пример:
vector = [1, 2, 3, 4, 5]
vector + vector = [2, 4, 6, 8, 10] # can be achieved with operator overloading
vector * 5 = [5, 10, 15, 20, 25] # can be achieved with operator overloading
pow(vector, 2) = [ 1, 4, 9, 16, 25 ] # is it possible in C#?
update
Из приведенных ниже ответов я вижу, что «перегрузка функций» невозможна (вероятно, не имеет особого смысла) и лучший способ справитьсято есть для создания пользовательской библиотеки математических функций (статический класс).
Это решение хорошо, хотя есть ли способ повторно использовать "пользовательские функции" с другими пользовательскими типами?Скажем, у меня есть числа (int / float), комплексные числа, векторы и матрицы (массив векторов).Я хочу, чтобы моя функция Pow работала со всеми 4 типами (она должна приводить в действие каждый числовой элемент в объекте).
Кроме того, есть ли возможность использовать функцию для выполнения различных действий в зависимости от типа ввода?Например
abs(-1) = 1 # for integer abs just change the sign if negative
abs(4+3i) = sqrt(4^2+3^2) = 5 # smth different for complex number