2016-07-20 5 views
2

У меня в моей программе определен журнал объекта.Почему мой объект не NULL

LoginModel log = new LoginModel () ; 

Я не записываю в него значения. Но почему объект не является NULL, когда моя функция возвращает его? (Смотрите рисунок)

[Bind(Exclude = "UserID")] 
public class LoginModel 
{ 
    [ScaffoldColumn(false)] 
    public int UserID { get; set; } 

    [ScaffoldColumn(false)] 
    public string FirstName { get; set; } 

    [Display(Name = "E-mailadresse")] 
    [Required(ErrorMessage = "Skriv venligst din e-mailadresse", AllowEmptyStrings = false)] 
    [EmailAddress(ErrorMessage = "Ugyldig e-mailadresse")] 
    [DataType(DataType.EmailAddress)] 
    public string Emailaddress { get; set; } 

    [Display(Name = "Kodeord")] 
    [Required(ErrorMessage = "Skriv venligst et kodeord", AllowEmptyStrings = false)] 
    [DataType(DataType.Password)] 
    [StringLength(8, MinimumLength = 4, ErrorMessage = "Kodeordet skal mindst bestå af 4-8 karakter.")] 
    public string Password { get; set; } 
} 

enter image description here

+2

Поскольку оператор 'new' создает объект. «Запись значений» (или настройка свойств) просто изменяет состояние существующего объекта. –

+0

Soo я не могу сделать это: если (срубы! = NULL) { } Как проверить объект журнала был загружен со значениями из базы данных или нет? –

+0

вы можете использовать 'if (log.UserID!= 0) {} ', чтобы определить, была ли она загружена. Дело в том, чтобы проверить, не является ли значение свойства не 'default (sometype)', после чего оно было загружено новыми значениями. – kurakura88

ответ

2

Код LoginModel log = new LoginModel () ; создаст новый экземпляр класса LoginModel который будет содержит все доступные свойства и поля со значениями по умолчанию. Если вы хотите log быть нуль означает объявить, как это:

LoginModel log; 

Примечание: следует назначить экземпляр класса LoginModel к log, чтобы получить доступ к значениям из него. Иначе он будет бросать NullReferenceException

+0

Soo i can not do that: if (log! = Null) {} Как проверить, что объект журнала загружен значениями из базы данных или нет? –

1

Когда вы новый объект, он больше не будет пустым.

, если у вас есть

LoginModel log; 

или

LoginModel log =null; 

Тогда это будет нулевым. когда вы пишете

LoginModel log = new LoginModel () ; 

Это новый объект и назначается переменной (log), поэтому он больше не будет пустым. это будет объект со свойствами, как вы настроите в конструкторе (в вашем случае нет инициализации, поэтому каждый обнуляемое свойство будет нулевым и целые числа будут 0, и т.д.)

1

https://en.wikipedia.org/wiki/Default_constructor

В как Java, так и C#, «конструктор по умолчанию» относится к нулевому конструктору , который автоматически генерируется компилятором, если для класса не определены конструкторы . Конструктор по умолчанию неявно вызывает нулевой конструктор суперкласса, затем выполняет пустое тело. Все поля оставляются при их начальном значении 0 (целочисленные типы), 0,0 (типы с плавающей точкой), false (логический тип) или null (ссылочные типы). Программист определенного конструктор, который не принимает никаких параметров также называется конструктором по умолчанию в C#, но не в Java

И как все говорят, если вы звоните конструктор по умолчанию, значение этого объекта не будет быть нулевым.

Смежные вопросы