以下代码编译,但失败并带有NullReferenceException:
class Test
{
public Dictionary<string, string> Dictionary { get; set; }
}
static void Main(string[] args)
{
var x = new Test
{
Dictionary = // fails
{
{ "key", "value" }, { "key2", "value2" }
}
};
}
Run Code Online (Sandbox Code Playgroud)
如果用以下内容替换标记为"失败"的行,则可以正常工作(如预期的那样):
Dictionary = new Dictionary<string, string>
Run Code Online (Sandbox Code Playgroud)
失败的语法是否有任何目的 - 是否可以在其他情况下成功使用?或者这是编译器的疏忽?
我正在修改一个大型C++项目,该项目的第一个版本仅适用于Windows 7,适用于Vista和XP.
主要工作是更改W7 API调用以在运行时使用GetProcAddress(以避免与其他平台上不可用的方法进行静态链接),因此我想知道是否有任何工具可以帮助识别哪些调用需要改变 - 希望通过检查C++代码本身.
如果不这样做,最好尝试针对较旧的Windows SDK构建项目吗?- 例如:http://www.microsoft.com/download/en/details.aspx?displaylang = en&id = 6510