2012-10-26 1 views
1

문자열에 대해 C#에 OR 피연산자가 있습니까?OR 연산자 C#에서 문자열 용

나는 Microsoft C# 피연산자 페이지를보고 있으며, 문자열에 대한 어떠한 종류의 OR도 없습니다. , 일을

CS0019: Operator '||' cannot be applied to operands of type 'bool' and 'string' 

내가 파이썬과 PHP를 사용하고있다 : C#을이 오류에 질식

if (Convert.ToString(r["first_name"]) != "Antoine" || "Brad" || "Programming" || "Admin" || "Patricia") 
            { 

가 :

는 내가 쓰기를 시도하고 if 문있어 이것과 비슷한 것이 허용됩니다.

C#의 올바른 구문은 무엇입니까?

+0

어쩌면 http://stackoverflow.com/questions/4987873/how-to-find-if-a-string-contains-any-items-of-an-list-of-strings 도움이 될 것입니다. – quip

+3

@AndrewAlexander Operators aren boolean 표현식을 위해 형식을 위해 설계된 것은 아닙니다. –

+0

@ MatíasFidemraizer 글쎄, 불리언 연산자에 대해서는 사실입니다. – Servy

답변

7

당신은 그렇게 할 수 없습니다.

대신 다음 사용하면 배열에 그 문자열을 넣어 포함 된 경우 확인할 수 있습니다 C#에서

if (!(new []{"Antoine", "Brad", "Programming", "Admin", "Patricia"}.Contains(Convert.ToString(r["first_name"]))) 
+2

'할 수 없어 .' - Oppressor! –

3
if ((r["first_name"]) != "Antoine" || (r["first_name"]) != "Brad" || (r["first_name"]) !="Programming" || (r["first_name"]) != "Admin" ||r(["first_name"]) != "Patricia") 
+0

그러면 컴파일러 경고가 표시됩니다. – SLaks

+0

@SLaks : 왜 sir –

+0

당신은'object'를'string'과 비교하고 있습니다; 그것은 오버로드 된'=='을 호출하지 않을 것입니다. – SLaks

12

당신은 그것을 수집 할 수 쓸 수 있습니다 r [ "first_name"] :

 var names = new[]{ "Antoine", "Brad", "Programming", "Admin", "Patricia" }; 

     if (names.Contains(Convert.ToString(r["first_name"]))) 
     { 
      //doSomething 
     } 
0

을 포함,

if (someString != "a" && someString != "b" && ...) 
0

나는 원하는 문자열을 배열에 넣은 다음 배열에 이름이 들어 있는지 확인하십시오.

var names = new [] {"Antoine", "Brad", "Programming", "Admin", "Patricia"}; 

다음 : 그래서

코드에

var match = names.Contains(r["first_name"]); 
1

어딘가에, 당신에 대해 검사 할 값을 선언합니다.

var badNames = new HashSet<string> {"Antoine", "Brad", "Programming", "Admin", "Patricia"}; 

그런 다음 나중에 해당 문자열이 컬렉션에 있는지 확인해야합니다. HashSet 생성자는 경우를 구분는 비교 할 수 있도록하는 비교자를 갈 수 있고 추가 보너스로

if(!badNames.Contains(Convert.ToString(r["first_name"]))){ 
    return "Its all good."; 
} 

.