Всем привет!
Читал я, читал всякие WTF, решил тоже задать задачку про одну милую особенность дотнета.
Правда, не про производительность.
Есть простенькая функция с двумя вариантами одной строки:
public string GetAsmVersion()
{
var asm = Assembly.GetExecutingAssembly();
AssemblyName name = asm.GetName(); // Вариант 1
AssemblyName name = new AssemblyName(asm.FullName); // Вариант 2
return name.Version.ToString();
}
В чём разница между вариантами 1 и 2? В каких случаях один из этих вариантов непригоден?
Здравствуйте, vmpire, Вы писали:
V>В чём разница между вариантами 1 и 2? В каких случаях один из этих вариантов непригоден?
Здравствуйте, Lexey, Вы писали:
V>>В чём разница между вариантами 1 и 2? В каких случаях один из этих вариантов непригоден?
L>
Хм, это другое проявление. Но я столкнулся с другим эффектом, без Silverlight.
Но это тоже ответ, так как моя проблема имела отношение именно к секьюрити, хоть и не к [SecurityCritical].
Рассказать или ещё поинтриговать?
Здравствуйте, vmpire, Вы писали:
V>Всем привет!
V>Читал я, читал всякие WTF, решил тоже задать задачку про одну милую особенность дотнета.
V>Правда, не про производительность.
V>Есть простенькая функция с двумя вариантами одной строки:
V>V>public string GetAsmVersion()
V>{
V> var asm = Assembly.GetExecutingAssembly();
V> AssemblyName name = asm.GetName(); // Вариант 1
V> AssemblyName name = new AssemblyName(asm.FullName); // Вариант 2
V> return name.Version.ToString();
V>}
V>
V>В чём разница между вариантами 1 и 2? В каких случаях один из этих вариантов непригоден?
У меня сначала возникло ощущение что первый вариант содержит поле Version (т.к. от реальной assembly), а второй — либо null, либо какой-то placeholder. Но после поста от Lexey тоже начал припоминать про приколы с "метод есть, но позвать его нельзя".