从C#转换为英文

dea*_*row -5 c# syntax asp.net-mvc

我正在尝试理解MVC,我认为我做得很好.但是我遇到了一种特殊的语法,我从MS样本中发现了一些我无法破译的语法!我想知道的是翻译成英文版,例如:"它返回一个IdentityUser类型的对象,它被传递给一个函数UserManager bla bla".如果你看下面的代码,它看起来像一个函数链?

return new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
Run Code Online (Sandbox Code Playgroud)

任何想法上面的意思取悦任何人?

Eri*_*ert 12

你的问题很模糊.我没有回答这个问题,而是让我描述一下如何理解它.

return new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
Run Code Online (Sandbox Code Playgroud)

我会为每个子表达式引入一个临时变量.所以,这与:

var userManager = new UserManager<IdentityUser>(new UserStore<IdentityUser>(new UsersDbContext()));
return userManager;
Run Code Online (Sandbox Code Playgroud)

我们可以进一步分解吗?是.

var userStore = new UserStore<IdentityUser>(new UsersDbContext());
var userManager = new UserManager<IdentityUser>(userStore );
return userManager;
Run Code Online (Sandbox Code Playgroud)

我们可以进一步分解吗?是.

var context= new UsersDbContext();
var userStore = new UserStore<IdentityUser>(context);
var userManager = new UserManager<IdentityUser>(userStore );
return userManager;
Run Code Online (Sandbox Code Playgroud)

我们可以进一步分解吗?没有.

这个新程序对你来说更容易理解吗?如果没有,请提出更具体的问题.

记住,你可以(几乎!)总是重构一个程序,使表达式被赋值给有意义的变量; 当你感到被表达式的复杂性所淹没时,这是一种很好的技巧,因为它将一个有意义的标签 - 一个抽象 - 与每个部分相关联.