bool isValid = false;
string username = "someadmin";
If(!String.IsNullOrEmpty(username) && !(username.IndexOf("admin") != -1)
isValid = true;
더블 네거티브가있는 두 번째 부분은 나를 교차시키고 있습니다!이 메소드는 무엇을 반환합니까?
bool isValid = false;
string username = "someadmin";
If(!String.IsNullOrEmpty(username) && !(username.IndexOf("admin") != -1)
isValid = true;
더블 네거티브가있는 두 번째 부분은 나를 교차시키고 있습니다!이 메소드는 무엇을 반환합니까?
는
젠장, 저를 때려주십시오. – Stephanvs
"IndexOf is> = 0"- 아닙니다, indexof는 -1이 될 수도 있습니다. "문자열이 발견되면 0부터 시작하는 인덱스 위치이며, 그렇지 않으면 -1입니다." –
롤 (Lol), 나는 빠르게 읽을 수있는 코드 완벽 주의자를 만들고있었습니다. 실제로 username.IndexOf ("admin")> = 0입니다. 반환 값이 4 또는 5 여야한다는 사실에 대해 생각할 수있는 것보다 더 빨리 입력하고있었습니다. 컴퓨터가 그럴 것 같아요 ...하지만 다행히도 질문자가 내 대답에 도움이되었습니다.) – Ropstah
그것은 거짓 돌아갑니다 ... 그것은 처음에 있었다으로
!String.IsNullOrEmpty(username) // this is true, the string is not NullOrEmpty
!(username.IndexOf("admin") != -1) // IndexOf is >= 0, so != 1 is true. But the first ! makes it false
그래서 IsValid가 같은 값이 포함됩니다 false를 돌려줍니다.
isValid
이 거짓입니다.
(Nitpick :이 코드는 아무것도 "반환"하지 않습니다. 그것은 단지 isValid
변수의 값을 설정)
평범 언어 버전 : (이름이 null 또는 비어 있지
경우 사용자 이름에 "admin"이 포함되지 않음) isValid = true;
첫 번째 부분 : 사용자 이름이 null 또는 빈 문자열인지 확인하십시오. if의 두 번째 부분 : 사용자 이름에 admin 하위 단어가 들어 있는지 확인하십시오. 아마도 Autor가 두 문자열을 비교해 보았습니다. 결과 : 사용자 이름이 비어 있지 않고 사용자 이름이 admin이 아닌 경우 isValid는 true입니다. 그렇지 않으면 유효합니다 - 거짓.
거짓. 하지만 나는 그 질문을받지 못합니까? 이걸 실행할 수는 없습니까? 어떤 이중 부정적인? 값은 단지 뒤집어지고 괄호는 명령문이 실행되는 순서를 명확하게 나타냅니다.
isValid
에 저장된 값은 false
입니다.
난 당신 DeMorgan's Laws에 제시 할 수있다 : 따라서 이중 부정을 제거 ...
if (!(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1)) {
isValid = true;
}
:
NOT (P OR Q) = (NOT P) AND (NOT Q)
NOT (P AND Q) = (NOT P) OR (NOT Q)
그래서, 당신은 그것을 다시 할 수있다.
또한, 당신은 말할 수 :
if (String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1) {
isValid = false;
}
를 ... 모든 악재를 제거한다.
또한, 당신은 말할 수 :
isValid = !(String.IsNullOrEmpty(username) || username.IndexOf("admin") != -1));
... 그것은 좋은 컴팩트하게 할 수 있습니다. 때문에
하지만 심각 ;-) 누락 된 괄호에
DeMorgan은 훌륭합니다. ''admin ''을 포함하도록 사용자 이름을 요구하지 않았습니까? –
ㅎ, 좋은 지적. 그게 내가 복사 붙여 넣기를 위해 얻는 것입니다. –
그것은 당신에게 구문 오류를 줄 것이다, 그것은 false를 돌려줍니다.
! String.IsNullOrEmpty (사용자 이름) // 이름이 비어 NOT NULL과 NOT 경우 => 진정한
username.IndexOf ("관리자")! = -1 // "관리자는"사용자 이름에서 발견되면 (-1이 아님) => true
! (username.IndexOf ("admin")!= -1) // "admin"이 username => false에 없으면
결론적으로 if 문 조건이 충족되지 않으므로 isValid는 false로 유지됩니다.
추신 : 저는 C# 프로그래머가 아니지만 IndexOf (문자열)가 -1 일 때 찾을 수 없다고 생각합니다.
... 글쎄, 우리가 반환 진술을 볼 수 없다고 생각할 때, 나는 우리가 질문에 대답 할 수 있다고 생각하지 않는다 -] –
왜 우리에게 물어볼 까? 바로 코드가 있습니다. 실행하여보십시오! –
이 코드는 컴파일되지 않습니다. 타의 추종을 불허하는 연옥. –