1
public ActionResult Register(RegisterModel model)
{
    if (ModelState.IsValid)
    {
        User user = null;
        using (UserContext db = new UserContext())
        {
            user = db.Users.FirstOrDefault(u => u.Email == model.Name);
        }
        if(user == null)
        {
            using (UserContext db  = new UserContext())
            {
                db.Users.Add(new User {Email = model.Name, Password = model.Password, Age = model.Age });
                db.SaveChanges();
                user = db.Users.Where(u => u.Email == model.Name && u.Password == model.Password).FirstOrDefault();
            }

            // ecli polzovatel' udachno dabavlen  v bd 
            if (user != null)
            {
                FormsAuthentication.SetAuthCookie(model.Name, true);
                return RedirectToAction("Index", "Home");
            }
        }
        else
        {
            ModelState.AddModelError("", "Pol'zovatel' s takim loginom uzhe sushestvuet");
        }
    }
    return View(model);
}
Vitaly
  • 1,610
  • Значит перемення будет создана только в пределах {} и затем удалена сборщиком мусора – Nazar Kalytiuk Jul 30 '17 at 11:37
  • 4
    @НазарКалитюк: Не совсем так. Сборщик мусора вызвать таким образом невозможно, возможно лишь вызвать Dispose (что здесь и происходит). https://ru.stackoverflow.com/q/486696/10105 – VladD Jul 30 '17 at 11:41
  • Просьба подравнять код –  Jul 30 '17 at 13:13

1 Answers1

3
using (var foo = new Bar()) // Где Bar - класс, который реализует IDisposable 
{
     ...
}

это тоже самое, что

Bar foo = new Bar();
try 
{ 
    ...
}
finally { foo.Dispose(); }

Т.е. при выходе из блока using (даже при исключении или return) у объекта foo будет вызван метод Dispose().

Festelo
  • 528