【发布时间】:2019-05-11 16:13:32
【问题描述】:
我正在做一个 .NET MVC 教程。话虽如此,我遇到了这样的代码:
public class MoviesController : Controller
{
public ActionResult Index()
{
var movies = GetMovies();
return View(movies);
}
private IEnumerable<Movie> GetMovies()
{
return new List<Movie>
{
new Movie {Id = 1, Name = "Shrek"},
new Movie {Id = 2, Name = "LotR"}
};
}
}
电影的索引视图如下所示:
@model IEnumerable<VideoStore.Models.Movie>
@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<h2>Movies</h2>
<table class="table table-bordered table-hover">
<thead>
<tr>
<th>Movie</th>
</tr>
</thead>
<tbody>
@foreach (var movie in Model)
{
<tr>
<td>@movie.Name</td>
</tr>
}
</tbody>
</table>
所以我的问题是,为什么在私有方法GetMovies() 中的MoviesController 中,使用了IEnumerable 返回类型?为什么不使用List 返回类型?
【问题讨论】:
-
这样您就可以将其更改为返回一个数组或任何实现 IEnumerable 的东西,而您不必更改使用它的代码。基本上,您只需公开具有所有所需功能的最小派生类型。
标签: c# asp.net-mvc ienumerable