Немного концептуального вопроса:Перегрузка оператора на C# - где должен идти код кода?
Я создаю свою пользовательскую структуру в виде вектора Vector3 (3 значения int), и я работал с перегрузкой стандартных операторов (+, -, *, /, == etc ...)
Поскольку я создаю библиотеку для внешнего использования, я пытаюсь соответствовать правилам FxCop. Поэтому они рекомендуют использовать методы, которые выполняют одну и ту же функцию.
Например. .Add(), .Subtract() и т. Д.
Чтобы сохранить дублирование кода, один из этих методов (перегрузка оператора или фактический метод) будет вызывать другой.
Мой вопрос, который должен назвать, какой?
Является ли это (и это только пример кода):
)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return struc1.Add(struct2);
}
public MyStruct Add(MyStruct other)
{
return new MyStruct (
this.X + other.X,
this.Y + other.Y,
this.Z + other.Z);
}
или:
B)
public static MyStruct operator +(MyStruct struc1, MyStruct struct2)
{
return new MyStruct (
struct1.X + struct2.X,
struct1.Y + struct2.Y,
struct1.Z + struct2.Z);
}
public MyStruct Add(MyStruct other)
{
return this + other;
}
Я действительно не уверен, либо предпочтительнее, но я ищу некоторые мнения :)
Почему вы создали методы, основанные вместо статических, с двумя параметрами? Это то, что рекомендовали FxCop? –