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(); // псевдокод
}
}