A в B нельзя, потому что A - это не B. Потому что B содержит какое-то дополнительное состояние (b), которого нет в A и компилятору неизвестно, каким оно должно быть в текущем виде (A конструировался иначе, чем B и как получить валидный B из A - известно лишь программисту). Invalid Cast).Enumerable.OfType<T>() - фильтрует по типу и законно возвращает пустой список (у вас список A, там действительно нет B)Enumerable.Cast<T>() - последовательно делает каст, который невозможен.listA.Select(x => new B{ a = x.a }).ToList();A необходимые данные для конструирования объекта B. Важно понимать, что это будут именно ДРУГИЕ объекты. Если A некопируем по своей природе, то этот фокус не пройдет. O(1)), когда вычисляется смещение и мы можем сразу перейти к нужному элементу, как в std::vector через [] или метод at(index).std::list, чтобы попасть (вставить, удалить и т.п.) куда-то в середину, мы должны в это место попасть, попутно обойдя все ниже(выше) лежащие элементы, один за другим. Это достаточно медленно (O(n)). Но сама вставка будет дешевой в любом месте (O(1)). 1) if ( *originalName ) при каких условиях оно срабатывает\не срабатывает.0, не срабатывает - в противном случае.2) while ( v6 ) как оно считает что пора бы и закончить?0.3) v6 = (originalName++)[1] я так понимаю что тут берется первый элемент из originalName?originalName (до инкремента).4) unsigned __int16 есть ли аналог этому типу в jav'е?long вместит все его значения. sleep.Create(City city), то привязка будет стараться отыскать среди ValueProvider'ов значения, совпадающие с именами свойств модели (в данном случае - City).// Каждая локаль должна иметь в себе словарь с переводами
public interface class ILocale {
Dictionary<string, string> Translation { get; }
}
// реализации разных локалей
public class English : ILocale {
public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
["test"] = "Test"
};
}
public class Russian : ILocale {
public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
["test"] = "Тест"
};
}
public class Ukrainian : ILocale {
public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
["test"] = "Тест"
};
}
public class Kazakh : ILocale{
public Dictionary<string, string> Translation {get; set;} = new Dictionary<string, string> {
["test"] = "Сынақ"
};
}namespace TestLib{
class Program {
static void Main(string[] args) {
ILocale locale = GetLocale();
WriteLine(locale.Translation["test"]);
ReadKey();
}
}
private static ILocale GetLocale() {
// Мы можем получать ее динамически из конфига
// но вызывающий код знает лишь, что это будет некая локаль, но какая
// точно - неизвестно
return Configuration.GetLocaleFromXml(); // псевдокод
}
}