2010-12-29 2 views

답변

4

그것이 변수이다 == "변화 없음"이 못해 한 번 설정하면 바뀔 수 있습니다. 변수 값을 변경할 수 있기 때문에 코드에서 많은 문제를 찾을 수있는 소스 일 수 있으므로 멀티 스레드 코드를 사용하는 경우 매우 유용합니다.

변경 불가능한 경우 일반적으로 좋습니다.

+0

uri의 구문 분석 방법은 무엇입니까? –

+0

문서를 확인하십시오 : http://developer.android.com/reference/android/net/Uri.html#parse(java.lang.String). – kcoppock

+0

@satheesh : @ kcoppock의 덧글 외에 [이 SO 스레드] (http://stackoverflow.com/questions/444112/how-do-i-encode-uri-parameter-values)를 확인하십시오. – darioo

0

"불변"이 "값을 변경할 수없는"이란

"가변"== "가변"

"불변"

2

.NET Framework 내의 불변 클래스의 좋은 예는 System.String입니다. String 객체를 만들면 변경할 수 없습니다. 주위에는 방법이 없습니다. 그것이 클래스가 설계된 방식입니다. 복사본을 만들 수 있으며 원본 복사본을 수정할 수도 있지만 안전하지 않은 코드를 사용하지 않고도 원본 인스턴스를 변경할 수는 있습니다. 만약 당신이 그것을 이해한다면 아마도 내가 여기로 갈 곳의 요점을 알기 시작할 것입니다 : 메소드 호출 중에 클라이언트가 변경할 수 없다는 것을 보증 할 수 있도록 메소드에 전달되는 참조 기반 객체 , 그것은 그 자체로 불변 이어야만한다.

기본적으로 개체가 참조로 유지되는 CLR과 같은 세계에서 이러한 불변성의 개념은 매우 중요합니다. 이제 선택 System.String이 변경 가능한 것을 가정하자, 그리고의 당신은 다음과 같은 가상의 방법으로 방법을 쓸 수있다 가정하자 : 그들은이 방법을 불러 지금은 코드에 따라 더 얻을 때

public void PrintString(string theString) 
{ 
    // Assuming following line does not create a new 
    // instance of String but modifies theString 
    theString += ": there, I printed it!"; 
    Console.WriteLine(theString); 
} 

은 발신자가 '실망을 상상 그들의 문자열에는이 여분의 것들이 추가됩니다. 그것이 시스템이라면 일어날 수있는 일입니다. 문자열이 변경 가능했습니다. 이유에 따라 String의 불변성이 존재한다는 것을 알 수 있습니다. 아마도 디자인에 동일한 기능을 추가하는 것을 고려해야합니다.

+0

최종본과 동일합니까? –

+0

@ satheesh.droid : 아니요! – fiction

+0

와트 차이가 있습니까? –

2

EX : 문자열
... 불변 u는 전 캐릭터의 위해가있는 경우 = "무엇이든지"대문자와
및 U 출력을 .. 전 Console.Write (s.ToUpper())
에 대한
콘솔은 u WHEREVER를 출력 할 것이다. 그러나 문자열 s는 여전히 ... 어떤 것이든지 ... 문자열을 WHERTVER로 바꾸는 변경 가능한 유형과 다르다.

0

자바에서는 모든 것이 String과 object로 취급된다. 10000 라인의 프로그램을 만들었다면 여기에 "public"을 100 번 추가 했으므로 저장소에이 대중이 생성 될 때마다 그렇게 생각한다고 생각하십시오. 그렇지 않으면 우리가 할 수있는 일을 만들었습니다. 그런 식으로 뭔가를 찾을 수있게되었습니다. (문자열 풀)

관련 문제