Нет никакой потребности повторно проанализировать. Один из конструкторов XElement берет другой XElement и делает глубокую копию из него:
XElement original = new XElement("original");
XElement deepCopy = new XElement(original);
Вот несколько модульных тестов для демонстрации:
[TestMethod]
public void XElementShallowCopyShouldOnlyCopyReference()
{
XElement original = new XElement("original");
XElement shallowCopy = original;
shallowCopy.Name = "copy";
Assert.AreEqual("copy", original.Name);
}
[TestMethod]
public void ShouldGetXElementDeepCopyUsingConstructorArgument()
{
XElement original = new XElement("original");
XElement deepCopy = new XElement(original);
deepCopy.Name = "copy";
Assert.AreEqual("original", original.Name);
Assert.AreEqual("copy", deepCopy.Name);
}
Это проблема аппаратной реализации. Мне эта проблема представлялась зависимой от как клавиатура имеет внутреннюю разводку.
Мне показалось, что для этого нет настоящего стандарта. Определенная комбинация из 4-х клавиш при этом нормально работала на одном компьютере (настольном компьютере) - на другом клавиатуре просто смог распознать не более трех из них. (ноутбук)
Я догадываюсь, что вы можете положиться на все клавиши управления (ctrl, alt, shift, windows, яблочные клавиши), потому что они, вероятно, подключены к другому «слою». Но когда дело доходит до «обычных» клавиш, включая клавиши курсора, клавиши цифровой клавиатуры и т.п., я бы сказал, что вы, вероятно, можете полагаться на 3 клавиши одновременно.
Лучше всего позволить пользователю выбирать свои собственные сочетания клавиш.