C# 对'的用法和含义感到困惑;上下文';在C中#
我是一名刚毕业的实习生,刚刚完成了大学的第一年。我学习了两门comp-sci课程的入门课程,对Java有相当扎实的基础知识,但也有基本的OOP语言思想。我以前从未使用过C#,我的实习需要它。我的任务是启动一个MVC应用程序来完成一些基本任务,但我对“上下文”在这种情况下的用法感到困惑。我正在使用带有ASP.NET MVC空白模板的Microsoft Virtual Studio。在这里我找到了“上下文”的用法。我主要对这种方法是如何或为什么使用它感到困惑C# 对'的用法和含义感到困惑;上下文';在C中#,c#,asp.net,asp.net-mvc,asp.net-core,C#,Asp.net,Asp.net Mvc,Asp.net Core,我是一名刚毕业的实习生,刚刚完成了大学的第一年。我学习了两门comp-sci课程的入门课程,对Java有相当扎实的基础知识,但也有基本的OOP语言思想。我以前从未使用过C#,我的实习需要它。我的任务是启动一个MVC应用程序来完成一些基本任务,但我对“上下文”在这种情况下的用法感到困惑。我正在使用带有ASP.NET MVC空白模板的Microsoft Virtual Studio。在这里我找到了“上下文”的用法。我主要对这种方法是如何或为什么使用它感到困惑 public void Configur
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
app.Use
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}
此代码
app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
告诉ASP.NET Core“运行”中间件。运行中间件意味着,给定一个HttpContext
,读取请求并写入结果,而不是“使用”中间件,这意味着中间件可能会执行,或者可能会将执行推迟到链中的下一个中间软件。这是特定于ASP.NET核心的,而不是C#
app.Run()
方法需要一个采用单个HttpContext
参数的异步函数形式的委托。lamda表达式(context)=>{}
是一个匿名函数的简写形式,它有一个名为context
的参数。C#编译器根据预期的原型识别上下文的类型。您可以这样编写代码:
app.Run(helloWorldHandler);
...
private async Task helloWorldHandler(HttpContext context) {
await context.Response.WriteAsync("Hello World!");
}
当您在方法Run()
上点击F12时会发生什么?在您的示例中,context
只是一个变量的名称。我的猜测是context
包含对的实例的引用,该实例表示当前正在运行的HTTP事务iaapplicationbuilder.Run()
承诺将实例传递给您的委托,这就是为什么它包含在lambda表达式中。我感觉我理解了为什么要使用上下文以及什么是Iambda方法。谢谢大家!