C \ # 네가 알 아야 할 것 을 배 워 라 --- (For 와 Foreach)
문자열 의 색인 에는 여러 개의 인자 가 있 을 수 있 습 니 다.
흔히 볼 수 있 는 것 은:
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——————————-
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
WebView2를 Visual Studio 2017 Express에서 사용할 수 있을 때까지Evergreen .Net Framework SDK 4.8 VisualStudio2017에서 NuGet을 사용하기 때문에 패키지 관리 방법을 packages.config 대신 PackageReference를 사용해야...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.