Jui*_*ice 117 c# wpf program-entry-point c#-4.0
在编程时我是初学者,但我确信其中一个通用规则是程序以Main()开头.我在创建WPF项目时没有看到一个.Main()只是在WPF中以不同的方式命名?
And*_*ler 118
Main()方法是自动创建的.如果您想提供自己的(在VS2013和VS2017中测试):
然后只需向App.xaml.cs添加一个Main()方法.它可能是这样的:
[STAThread]
public static void Main()
{
var application = new App();
application.InitializeComponent();
application.Run();
}
Run Code Online (Sandbox Code Playgroud)
Mar*_*ell 71
它是在构建期间生成的,但您可以自己提供(根据需要在项目属性中消除歧义).在obj/debug中查找app文件; 我(由"C#2010 Express"提供)App.g.i.cs:
namespace WpfApplication1 {
/// <summary>
/// App
/// </summary>
[System.CodeDom.Compiler.GeneratedCodeAttribute("PresentationBuildTasks", "4.0.0.0")]
public partial class App : System.Windows.Application {
/// <summary>
/// InitializeComponent
/// </summary>
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public void InitializeComponent() {
#line 4 "..\..\..\App.xaml"
this.StartupUri = new System.Uri("MainWindow.xaml", System.UriKind.Relative);
#line default
#line hidden
}
/// <summary>
/// Application Entry Point.
/// </summary>
[System.STAThreadAttribute()]
[System.Diagnostics.DebuggerNonUserCodeAttribute()]
public static void Main() {
WpfApplication1.App app = new WpfApplication1.App();
app.InitializeComponent();
app.Run();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Fra*_*nov 13
Main() 由CLR和WPF自动提供.
C#编译器采用命令行开关/m,它指定包含实现的类型Main().按照惯例,如果没有显式指定启动对象,CLR将查找具有静态Main()方法并将调用它的任何类.(正如@Marc Gravel在评论中指出的那样)
对于WPF,在构建Main()时自动生成,App.xaml并指定/ m开关以使C#编译器将该类用作入口点.但是,如果您查看项目属性,您会发现有一个设置供您选择启动对象.因此,如果您愿意,您可以提供自己的实现类Main().
请注意,这将使您负责创建Application实例并调用其Run()方法以确保正确启动WPF基础结构.
main()是应用程序的标准入口点,但所有应用程序都是以这种方式构建的.在XAML项目中,App.XAML文件指定它所指的入口点StartupUri="MainWindow.xaml".
正如其他人所说,实际的主要功能是根据项目中XAML文件的内容生成的.
| 归档时间: |
|
| 查看次数: |
63360 次 |
| 最近记录: |