Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对'的用法和含义感到困惑;上下文';在C中#_C#_Asp.net_Asp.net Mvc_Asp.net Core - Fatal编程技术网

C# 对'的用法和含义感到困惑;上下文';在C中#

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

我是一名刚毕业的实习生,刚刚完成了大学的第一年。我学习了两门comp-sci课程的入门课程,对Java有相当扎实的基础知识,但也有基本的OOP语言思想。我以前从未使用过C#,我的实习需要它。我的任务是启动一个MVC应用程序来完成一些基本任务,但我对“上下文”在这种情况下的用法感到困惑。我正在使用带有ASP.NET MVC空白模板的Microsoft Virtual Studio。在这里我找到了“上下文”的用法。我主要对这种方法是如何或为什么使用它感到困惑

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方法。谢谢大家!