Главная страница   /   4.3. Использование инициализаторов объектов и коллекций (ASP.NET MVC 4

ASP.NET MVC 4

ASP.NET MVC 4

Адам Фриман

4.3. Использование инициализаторов объектов и коллекций

Другой утомительной задачей программирования является создание нового объекта, а затем присвоение значений свойствам, как показано в листинге 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# более приятным в использовании, но не имеет никакого другого воздействия или выгоды.