Как легко клонировать (копировать) a RectangleF
в C#?Как клонировать RectangleF
Есть, очевидно, неэлегантные способы сделать это, например new RectangleF(r.Location, r.size)
, но, конечно, есть методили .Clone
где-то скрывается? Но ни один из этих компиляторов для меня не существует и не является конструктором копирования. Я подозреваю, что есть простой, C# -стандартный способ копирования любой структуры, которую я еще не нашел.
В случае, если это имеет значение, моя настоящая цель - создать метод, который возвращает смещенную версию прямоугольника (потому что, как ни удивительно, RectangleF
не имеет такого встроенного - он имеет только метод мутатора). Мой лучший удар в это:
public static RectangleF Offset(RectangleF r, PointF offset) {
PointF oldLoc = r.Location;
return new RectangleF(new PointF(oldLoc.X+offset.X, oldLoc.Y+offset.Y), r.Size);
}
(Сделан уродливее, чем это должно быть на поразительное отсутствие оператора сложения для PointF
, но это другой вопрос.) Есть ли более простой способ сделать это?
Спасибо (и спасибо @ jdv-Jan de Vaan, тоже). Я знал, что я должен упустить что-то очевидное! Использование «нового» оператора заставил меня думать, что я работаю со ссылками, но теперь вижу, что это не так на C#. –