ASP.NET MVC 4
Адам Фриман
Использование инициализаторов объектов и коллекций
Другой утомительной задачей программирования является создание нового объекта, а затем присвоение значений свойствам, как показано в листинге 4-8, который демонстрирует добавление метода действия CreateProduct
в контроллер Home
.
Листинг 4-8: Создание и инициализация объекта со свойствами
using LanguageFeatures.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
}
public ViewResult AutoProperty()
{
// ...выражения опущены для краткости...
}
public ViewResult CreateProduct()
{
// создание нового объекта Product
Product myProduct = new Product();
// установка значений свойств
myProduct.ProductID = 100;
myProduct.Name = "Kayak";
myProduct.Description = "A boat for one person";
myProduct.Price = 275M;
myProduct.Category = "Watersports";
return View("Result",
(object)String.Format("Category: {0}", myProduct.Category));
}
}
}
Мы должны пройти три этапа, чтобы создать объект Product
и получить результат: создать объект, установить значения параметров, а затем вызвать метод View
, чтобы мы могли увидеть результат через представление. К счастью, мы можем использовать функцию инициализации объекта, которая позволяет создавать и заполнять экземпляр объекта Product
за один шаг, как показано в листинге 4-9.
Листинг 4-9: Использование функции инициализации объекта
public ViewResult CreateProduct() {
// создание и заполнение нового объекта Product
Product myProduct = new Product {
ProductID = 100, Name = "Kayak",
Description = "A boat for one person",
Price = 275M, Category = "Watersports"
};
return View("Result", (object)String.Format("Category: {0}", myProduct.Category));
}
Фигурные скобки ({}
) после вызова названия Product
образуют инициализатор, который мы используем для передачи значений параметров как часть процесса создания. Эта же функция позволяет нам инициализировать содержимое коллекций и массивов как часть процесса создания, что показано в листинге 4-10.
Листинг 4-10: Инициализация коллекций и массивов
using LanguageFeatures.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace LanguageFeatures.Controllers
{
public class HomeController : Controller
{
public string Index()
{
return "Navigate to a URL to show an example";
}
// ...другие методы действия опущены для краткости...
public ViewResult CreateCollection()
{
string[] stringArray = { "apple", "orange", "plum" };
List<int> intList = new List<int> { 10, 20, 30, 40 };
Dictionary<string, int> myDict = new Dictionary<string, int> {
{ "apple", 10 }, { "orange", 20 }, { "plum", 30 }
};
return View("Result", (object)stringArray[1]);
}
}
}
В листинге показано, как создать и инициализировать массив и два класса из общей библиотеки коллекции. Эта функция располагает удобным синтаксисом – она просто делает C# более приятным в использовании, но не имеет никакого другого воздействия или выгоды.