Я знаю несколько структур Point
в .NET: System.Drawing.Point
, System.Windows.Point
, Sys.UI.Point
, но все они находятся в библиотеках пользовательского интерфейса высокого уровня (GDI +, WPF, AJAX). Мне нужна структура Point
для вычислений в моей библиотеке классов, которую я не хочу привязывать к какой-либо конкретной технологии пользовательского интерфейса. Есть ли какая-либо UI-независимая структура Point
в .NET? Или мне нужно будет создать его самостоятельно? Это просто, я знаю, но звучит как изобретать колесо.
Существует ли UI-независимая структура Point в .NET?
Ответ 1
Восстановите колесо. Он будет работать гладко! Действительно, если это просто крошечная структура, которая зависеть от больших сборок, тянет много других вещей? Особенно на устройствах с ограничениями, таких как телефоны... Но обратите внимание на то, как правильно использовать классы и структуру, если вы хотите получить лучшую производительность.
Это довольно хорошее чтение, и я чувствую, что вы хотите его прочитать: Фрэнк Сэвидж на производительность CLR.
Ответ 2
Насколько мне известно, это не так, но, как вы заявили, это не так сложно реализовать, поэтому я предлагаю вам сделать это.
У вас может возникнуть соблазн использовать класс Tuple
, как и другие. Хотя он может выполнять эту работу, это не то, что вы захотите повторно использовать снова и снова. Кроме того, вы можете столкнуться с проблемами сравнения, в зависимости от особенностей вашего приложения.
Ответ 3
Вы также можете использовать Tuple класс для этой цели.
Ответ 4
В любом случае вы можете использовать System.Drawing.Point
или System.Drawing.PointF
. Правда, он может быть преобразован в и из соответствующей структуры GDI +, но сам по себе это просто структура .NET. Это чистая управляемая структура, которая просто выглядит COM видимой и конвертируемой:)
Ответ 5
Если вы не хотите создавать свой собственный класс Point
, вы можете использовать ссылку Tuple
class MSDN. Вы можете передать пару координат любого типа, который вы хотите использовать в своей библиотеке классов, вместо того, чтобы принуждать пользователя создавать новый класс.
Если вы хотите предоставить несколько вспомогательных методов для пользователя вашей библиотеки, я бы создал свой собственный класс. Кортежи отлично подходят для быстрого обмена данными.