Хотя верно, что запрос регулярных выражений для синтаксического анализа произвольного HTML похож на прошение начинающему писать операционную систему, иногда бывает целесообразно проанализировать ограниченный , известный набор HTML.
Если у вас есть небольшой набор HTML-страниц, которые вы хотите очистить данные, а затем вложить в базу данных, регулярные выражения могут работать нормально. Например, недавно я хотел получить имена, партии и округа австралийских федеральных представителей, которые я сошел с веб-сайта парламента. Это была ограниченная одноразовая работа.
Regexes отлично справились со мной и были очень быстрыми, чтобы настроить.
Способ сделать это - использовать кортеж и деконструкцию, чтобы разрешить несколько присвоений в одном выражении:
public class Person
{
public string Name { get; }
public int Age { get; }
public Person(string name, int age) => (Name, Age) = (name, age);
}
Начиная с C # 7.1 (представленного с помощью Visual Studio 2017 Update 3), компилятор код теперь оптимизирует фактическую конструкцию и деконструкцию кортежа. Таким образом, этот подход не имеет накладных расходов на производительность по сравнению с назначением «longhand».
В основном нет. Выраженные члены доступны только тогда, когда у вас есть один оператор для выполнения. В этом случае у вас два.
Я имею в виду, что вы могли использовать кортежи, но я настоятельно рекомендую против этого:
// DO NOT USE THIS CODE - IT'S JUST TO DEMONSTRATE THE FEASIBILITY
public class Person
{
private readonly (string name, int age) tuple;
public string Name => tuple.name;
public int Age => tuple.age;
public Person(string name, int age) => tuple = (name, age);
}
Это работает, потому что вы Теперь у нас появилось только одно утверждение (tuple = (name, age);
). Но вы, конечно, не должны изменять свои поля так, чтобы вы могли использовать конструктор с выраженным выражением.
(Как показал Дэвид, вы можете построить кортеж, а затем деконструировать его в автоматические реквизиты только для чтения напрямую, это немного приятнее, но это все равно не стоит делать IMO.)
System.ValueTuple
: install-package System.ValueTuple
– Sirwan Afifi
15 March 2017 в 20:25