在WPF主窗口中訪問靜態屬性時,是什麼原因造成這種奇怪的行爲我有我的WPF項目,我設置該屬性的主窗口中的公共靜態屬性「inDevMode」基於命令在啓動應用程序時行參數。C#從App.xaml.cs
MainWindow mainWindow = new MainWindow();
if (startInDevMode)
{
MainWindow.inDevMode = true;
}
mainWindow.Show();
的「主窗口」花括號內沒有突出顯示灰色(其中其他兩個類型的引用),當編譯我得到這個消息:
'Window' does not contain a definition for 'inDevMode' and no extension method 'inDevMode' accepting a first argument of type 'Window' could be found (are you missing a using directive or an assembly reference?)
如果我改變什麼是內牙套實例引用(如下),我知道錯了,訪問靜態屬性時:
MainWindow mainWindow = new MainWindow();
if (startInDevMode)
{
mainWindow.inDevMode = true;
}
mainWindow.Show();
我得到這個錯誤:
Member 'MainWindow.inDevMode' cannot be accessed with an instance reference; qualify it with a type name instead
但是,如果我改變「主窗口」實例「主窗口」的標識,如下然後我沒有得到任何錯誤?
MainWindow MainWindow = new MainWindow();
if (startInDevMode)
{
MainWindow.inDevMode = true;
}
MainWindow.Show();
和花括號(「主窗口」)中的類型。現在參考灰
但爲什麼會重命名實例「主窗口」解決命名衝突? – stuicidle
因爲那時的名稱爲「主窗口」突然指的是局部變量是在範圍上,而不是屬性,然後名稱解析成功。請參考以下鏈接瞭解不合格的名稱解析在C#中如何運作的更多信息:https://msdn.microsoft.com/en-us/library/aa711882(v=vs.71).aspx。 – mm8