C # 4.0 dynamic: Потенциальное эффективное решение для числовых обобщений?

После того, как я сам столкнулся с этой проблемой при попытке реализовать общий Vector2 на C #, я провел несколько исследований по этой проблеме, также описанных в этом вопросе. :

Менее универсальные дженерики? Возможное решение для арифметики в обобщенных версиях C #

Эти ссылки содержат дополнительную справочную информацию и интересные подходы к решению:

https://jonskeet.uk/csharp/miscutil/usage/genericoperators.html

http: // www.codeproject.com/KB/cs/genericnumerics.aspx

Теперь, когда C # 4.0 вышел с его новым универсальным динамическим типом, мой вопрос к блестящему сообществу SO: это инструмент это можно было бы использовать, возможно, для создания производительного, универсального вектора / матрицы и т. д. числовые типы?

Очевидно, что Vector2 можно построить просто так:

public struct Vector2
{
    public dynamic X;
    public dynamic Y;

    public Vector2(dynamic x, dynamic y)
    {
        this.X = x;
        this.Y = y;
    }

    public static Vector2 operator+(Vector2 a, Vector2 b)
    {
        return new Vector2(a.X + b.X, a.Y + b.Y);
    }
}

, но при таком подходе у нас здесь нет ограничений типа, поэтому вы можете создать Vector2 (3, 12.4572) . Есть ли способ смешать динамические члены с параметром типа Vector2 для выполнения наших математических операций, как это было бы с int s?

Возможно, некоторая форма Чтобы убедиться, что this.X является T , можно использовать приведение, хотя я не знаю, как это сработает.

8
задан tukaef 26 April 2019 в 12:08
поделиться