C \ # 네가 알 아야 할 것 을 배 워 라 --- (For 와 Foreach)

이 글 은 cartzhang 에서 작 성 했 습 니 다. 전재 할 때 출처 를 밝 혀 주 십시오.모든 권 리 는 보류한다.글 링크:http://blog.csdn.net/cartzhang/article/details/52577283 작성 자: cartzhang
문자열 의 색인 에는 여러 개의 인자 가 있 을 수 있 습 니 다.
흔히 볼 수 있 는 것 은:
public string this[string key] {
  get { return internalDictionary[key]; }
}

예 를 들 면:
x = test["a"];

하지만 그 럴 수도 있다.
 x = something[“a”, “b”, “c”, “d”]
public IEnumerable<string> this[params string[] keys] 
{
  get { return keys.Select(key => internalDictionary[key]).AsEnumerable(); }
}

얻 은 결 과 는 순서대로 출력 한다.
2. 문자열 은 코드 에서 여러 번 사용 되 는데 사실은 하나의 인 스 턴 스 입 니 다.
C \ # 문자열 에 문자열 이 있 습 니 다. 즉, string interning 입 니 다.컴 파일 러 에 사 용 될 때마다 메모리 목록 에 runtime 에 색인 을 추가 합 니 다.String. Inter ("chakknsls") 를 사용 하여 볼 수 있 습 니 다.
String.Intern(“what”) == “what”

이 코드 는 항상 true 로 돌아 갑 니 다. 이 코드 에서 string 을 정 의 했 기 때 문 입 니 다. String.IsInterned(“wh” + “at”) == “what” 컴 파일 러 의 최적화 로 인해 이것 도 True 로 돌아 갑 니 다.다음은 프로그램 이나 Runtimed 의 다른 곳 에서 Runtime 을 정의 할 때 만 true 로 돌아 갑 니 다.
String.IsInterned(new string(new char[] { ‘w’,’h’,’a’,’t’ }) == new string(new char[] { ‘w’,’h’,’a’,’t’ }) 

더욱 주의해 야 할 것 은
 (object)”Hi” == (object)”Hi”  

이것 은 응용 프로그램 에서 True 로 돌아 가지 만 Debug 하면 False 로 돌아 갑 니 다.debug 는 string 의 intern 을 볼 줄 모 르 기 때 문 입 니 다.
이 건 당분간 이해 가 안 돼.VS 테스트 해 보 세 요. Debug 에서 도 항상 true 였 어 요.버 전이 바 뀌 었 나 봐 요. 업그레이드.
정적 변수
static class Program {
  private static int a = 5;
  private static int b = a;

  static void Main(string[] args) {
   Console.WriteLine(b);
  }
}

정적 스 트 리밍 은 초기 화 할 때 작성 순서에 따라 실행 되 지 않 기 때문에 출력 이 0 일 확률 이 있 습 니 다.
4. For 순환 과 Foreach 의 효율 문제
for 순환 에 있어 서 불필요 한 조작 이 발생 하지 않 습 니 다.Foreach 는 불필요 한 조작 을 할 수 있 습 니 다.주요 원인 은 컴 파일 러 의 이해 가 다 르 기 때문이다.사용 한 알고리즘 이 다르다.Foreach 에서 불필요 한 상태 비교 가 있 습 니 다.그러나 서로 다른 넷 버 전 간 의 차이 도 비교적 크다.
1). Net 3.5 버 전의 For 순환
//
2). Net 3.5 버 전의 Foreach 순환
3). Net 4.5 버 전 순환
4). Net 4.5 버 전 Foreach 순환
3.5 와 4.5.2 의 차 이 는 매우 크다.나중에 넷 최적화 가 잘 됐어 요.개인 적 으로 For 와 Foreach 는 그다지 나 쁘 지 않다 고 생각 합 니 다. 명령 으로 볼 때 Foreach 는 명령 이 더 적은 것 같 습 니 다.하지만 집행 시간 은 말 하기 어렵 고 개인 적 으로 나 쁘 지 않다 고 생각 합 니 다.
5. 참고:
http://www.codeproject.com/Articles/6759/FOREACH-Vs-FOR-C https://damieng.com/blog/2012/10/29/8-things-you-probably-didnt-know-about-csharp
문제 가 있 으 면 언제든지 연락 하 세 요!!!고마워!!! - -THE————END——————————-

좋은 웹페이지 즐겨찾기