2016-07-20 6 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

김 난 그렇게 못할? –

+0

당신은'if (log.UserID!= 0) {}'을 사용하여로드되었는지 확인하십시오. 요점은 속성의 값이'default (sometype)'이 아닌지 확인하는 것입니다. 그러면 새로운 값이로드됩니다. – kurakura88

답변

2

코드 LoginModel log = new LoginModel () ; 것이 기본 값으로 액세스 가능한 모든 속성과 필드를 포함하는 클래스 LoginModel의 새로운 인스턴스를 생성합니다 (그림 참조). 당신이되고 log을 원하는 경우는 null 수단은 다음과 같이 선언한다

LoginModel log; 

참고 : 당신은 그것에서 값에 액세스 할 수 logLoginModel 클래스의 인스턴스를 할당해야합니다. 그렇지 않으면 throw됩니다 NullReferenceException

+0

그렇게 할 수 없습니다 : if (log! = null) {} 로그 객체가 데이터베이스의 값으로로드되었는지 여부를 어떻게 확인할 수 있습니까? –

1

새 개체를 만들면 더 이상 null이 아닙니다.

당신이

LoginModel log; 

또는

LoginModel log =null; 

이있는 경우 그 다음은 null이됩니다. 당신이 쓸 때

LoginModel log = new LoginModel () ; 

그것은 새로운 객체가되고 변수 (로그)에 할당되므로 더 이상 null이되지 않습니다. 당신이 당신의 생성자에서 초기화 한대로 특성을 가진 개체가 될 것입니다

1

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

에서 (귀하의 경우에 그렇게 모든 널 (NULL) 속성이 null이 될 것입니다 및 정수 등 0이 될 것입니다, 더 초기화 없음) Java 및 C#의 경우, "기본 생성자"는 해당 클래스에 대해 생성자가 정의되지 않은 경우 컴파일러에서 자동으로 생성되는 null 생성자를 나타냅니다. 기본 생성자 은 수퍼 클래스의 무효 생성자를 암시 적으로 호출 한 다음 빈 본문을 실행합니다. 모든 필드의 초기 값은 0 (정수 유형), 0.0 (부동 소수점 유형), false (부울 유형) 또는 null (참조 유형)입니다. 더 매개 변수를 사용하지 않는 프로그래머 정의 생성자는 C#의 기본 생성자를 호출하지만, 모든 사람들이 말하는 것처럼 기본 생성자를 호출하면되지 Java

과, 그 객체의 값은하지 않습니다 널이 되라.

관련 문제