Я создал метод расширения под названием IsOccluded
. Я попытался создать статический метод в том же файле кода с тем же именем и параметрами, но не с расширением:
public static bool IsOccluded(Vector2 point, Matrix world) { }
public static bool IsOccluded(this Vector2 point, Matrix world) { }
Однако, поскольку параметры, по сути, одинаковы в глазах компилятора, это недопустимо. Мне это кажется странным, так как они называются по-разному:
Vector2 position;
Matrix world;
Rendering2D.IsOccluded(position, world);
position.IsOccluded(world);
Я изменил имя метода без расширения на IsPointOccluded
, чтобы устранить ошибку, плюс он все равно немного чище. Но это подводит меня к моему вопросу:
Похоже, это два разных метода с двумя разными сигнатурами, так почему компилятор жалуется?
Я знаю, что следующее не может быть скомпилировано, потому что подписи точно такие же:
public void X(int y, double j) { }
public void X(int a, double z) { }
Мне не хватает основной концепции по этой теме?