Не надо везде пихать var, используй точные типы данных.
Насколько я помню, DocumentNode.SelectNodes("//title") вернет коллекцию узлов, и именно этот тип и надо указывать типом переменной. Узнать тип можно наведением мыши на функцию SelectNodes, высветится возвращаемый ею тип.
А вообще по результатам
поиска в гугле есть много интересного на эту тему. В частности, обсуждается вопрос, почему возвращается Null а не пустая коллекция, есть даже целый
форум , посвященный этой библиотеке.
Чуть не забыл. Не компилируется потому, скорее всего, что в C# тип данных var вычисляется немного отлично от обычных типов. пруфлинк -
http://msdn.microsoft.com/ru-ru/library/bb383973.aspx
Если уж так охота иметь "пространственную переменную", дай ей тип
object, это даст гарантию, что не возникнет исключений и данную переменную можно будет впоследствии привести к любому нужному типу. Для этого в цикле надо будет добавить приведение типа примерно так
foreach ((HtmlNode klo2 in
(HtmlNodeCollection)klo1)