长话短说,如果我这样做:
string myV = Assembly.GetExecutingAssembly().GetName().Version.ToString();
有些东西会无效吗?我读了msdn,但没有指定GetName()
和Version
部分。
答案 0 :(得分:5)
该字段的技术上可能为null:
var name = Assembly.GetExecutingAssembly().GetName();
name.Version = null;
Console.WriteLine(name.Version == null); // true
但我无法想到 为空的任何情况。因为检查我只是添加一个空检查并且如果是 null则抛出自定义异常,因为诊断NullReferenceException
可能很困难,因为你没有得到任何指示至于什么除了堆栈跟踪之外是null。
答案 1 :(得分:4)
版本将始终存在。
每个程序集都有一个版本号作为其标识的一部分。
https://msdn.microsoft.com/en-us/library/51ket42z(v=vs.110).aspx
顺便说一句,如果您使用的是C#6,在类似的情况下,当不确定返回什么方法时,您应该考虑使用null propogation运算符“?。”。通过这样做,您将确保它永远不会抛出空引用错误。
可能发生的最糟糕的结果是字符串为空。
string myV = Assembly.GetExecutingAssembly()?.GetName()?.Version?.ToString();