배열, 목록 또는 사전의 상대 색인 [^ x]에서 절대 위치를 얻습니까? (씨#)

매트

C # 버전 8부터는 예와 같이 새로운 인덱싱 방법이 있습니다 .

void Main()
{
    Index idx = ^5; // counted from last to first element

    var sentence = new string[]
    {
        "The", "quick", "brown", "fox",         // position 0 ... 3
        "jumped", "over", "the", "lazy", "dog"  // position 4 ... 8
    };
    var lstSentence = sentence.ToList(); // applicable to list as well

    Console.WriteLine(sentence[idx]);
    Console.WriteLine(lstSentence[idx]);
}

반환합니다 jumped.

여태까지는 그런대로 잘됐다. 그러나 어떻게 ^5효율적 으로 나타내는 절대 위치를 얻을 수 있습니까?
.NET이 내부적으로 Index (이 예제에 추가 한)를 사용하는 것을 보았고 값 속성이 있습니다.

의 위치를 sentence[^5]어떻게 얻을 수 있습니까? 같은 것

var absPos = sentence[^5].Index.Value; // get absolute position (which is = 4)

(그러나 불행히도 이것은 존재하지 않는 것 같습니다)

수식 (요소 수-오른쪽에서 위치)이 있다는 것을 알고 있지만 컴파일러 / .net은 이것을 계산하고 아마도 어딘가에 저장합니다.

업데이트 : idx.Value는 해결책이 아니며 상대 값 5를 .IsFromEnd와 함께 저장합니다. 하지만 sentence[^5].Index.Value내가 알고 싶었던 것처럼 직접 액세스 할 수는 없습니다 .

참고 : 이는 RudimentaryMultiValuedDictionary 예제를Dictionary 살펴보면 에도 유용 합니다. 필요한 추가 인덱서를 추가하려는 경우 . 이 목적에 필요한은 정수 값 (절대 위치)에서만 작동합니다.public List<TValue> this[Index idx]internalDictionary.ElementAtOrDefault(i)

매튜 왓슨

디 컴파일러를 사용하여 예제에 대해 생성 된 코드를 확인하는 경우 다음과 같습니다.

private static void Main()
{
    Index index = new Index(5, true);
    string[] strArray = new string[] { "The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog" };
    Console.WriteLine(strArray[index.GetOffset((int)strArray.Length)]);
}

보시다시피 index.GetOffset((int)strArray1.Length)오프셋을 계산하는 데 사용 됩니다. 같은 방식으로 수행하는 것 외에는 직접 수행 할 수있는 방법이 없습니다. 사용할 수있는 다른 언어 구조는 없습니다.

( 이미이므로 strArray1.Length 속성을 캐스트하는 이유를 잘 모르겠습니다 .)intint

또한 다음과 같은 코드를 사용하여 인덱스를 인라인으로 넣는 경우에도 유의하십시오.

var sentence = new string[]
{
    "The", "quick", "brown", "fox",
    "jumped", "over", "the", "lazy", "dog"
};

Console.WriteLine(sentence[^5]);

다음과 같이 컴파일됩니다.

string[] strArray = new string[] { "The", "quick", "brown", "fox", "jumped", "over", "the", "lazy", "dog" };
Console.WriteLine(strArray[(int)strArray.Length - 5]);

Index객체 의 사용을 완전히 최적화 했습니다.


아래 주석에서 언급했듯이 IList. 그런 다음 , 배열 IList등과 같은 구현하는 모든 항목에서 작동 합니다.List<T>ImmutableSortedSet<T>

예를 들면 :

public static class IndexExt
{
    public static int AbsIndexFor(this IList self, Index index)
    {
        return index.GetOffset(self.Count);
    }
}

그런 다음 다음을 수행 할 수 있습니다.

var array = new string[]
{
    "The", "quick", "brown", "fox",
    "jumped", "over", "the", "lazy", "dog"
};

Console.WriteLine(array.AbsIndexFor(^5));

var list = new List<string>
{
    "The", "quick", "brown", "fox",
    "jumped", "over", "the", "lazy", "dog"
};

Console.WriteLine(list.AbsIndexFor(^5));

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

CSS 또는 Jquery를 사용하여 데스크톱의 경우 절대 위치 및 모바일의 경우 상대 위치에 두 블록 배치

분류에서Dev

목록의 모든 항목에 대한 색인 내 서수 위치를 효율적으로 얻는 방법

분류에서Dev

배열의 문자열에 대한 인덱스 목록을 얻습니까?

분류에서Dev

배열 목록의 각 루프에 대해 열을 지정할 수 있습니까? 씨#

분류에서Dev

SQLite의 배열 목록에서 문자열 대신 스피너에서 문자열 주소를 얻습니까?

분류에서Dev

절대 위치를 사용하지 않고 div를 서로 위에 배치하는 방법이 있습니까?

분류에서Dev

대신 배열의 요소를 절대 값으로 대체하려면 어떻게해야합니까? 씨#

분류에서Dev

부모 요소에 상대적인 절대 위치를 사용하는 방법

분류에서Dev

절대 및 고정 블록 요소의 위치는 어떻게 치수를 얻습니까?

분류에서Dev

링크를 오른쪽 상단 영역에 배치하려면 어떻게해야합니까? (헤더를 상대로 사용하는 절대 위치)

분류에서Dev

최대 절전 모드에서 @NamedStoredProcedureQuery를 사용할 때 열 정의 목록이 필수 메시지입니다.

분류에서Dev

회전 및 애니메이션 목적으로 사용할 수있는 절대 요소를 다른 절대 요소의 중앙에 배치하는 방법

분류에서Dev

객체 배열 목록에서 최대 값을 얻습니까?

분류에서Dev

절대 위치 입력 상자에 상대적인 CSS를 사용하여 레이블을 배치하는 방법

분류에서Dev

Alt-Tab 목록에서 순서대로 열려있는 창의 순서를 검색 하시겠습니까?

분류에서Dev

Java에서 2D 배열 목록의 최대 / 최소를 얻는 방법

분류에서Dev

상위 목록에 대한 개체 하위 분류 목록의 색인

분류에서Dev

배낭 대시 보드에서 행 또는 열의 색상을 변경하는 방법은 무엇입니까?

분류에서Dev

절대 위치를 피하면서 전체 화면 높이를 따라 항목을 배치하는 방법은 무엇입니까?

분류에서Dev

목록의 배열 배열을 사용합니까? 씨#

분류에서Dev

명령 줄에서 대시 검색 플러그인 (범위) 목록을 얻는 방법은 무엇입니까?

분류에서Dev

"위치 : 상대 / 절대"를 사용하지 않고 이미지 위에 제목

분류에서Dev

문자열과 정수, 목록 또는 배열을 포함하는 사용자 입력 데이터를 저장하는 효과적인 방법? 씨#

분류에서Dev

BigQuery의 각 배열 항목에 대한 '색인'(또는 서수 값)을 가져올 수 있나요?

분류에서Dev

하위 문자열을 포함하는 사전에 대해 목록의 하위 문자열에서 일치하는 값을 반환합니다.

분류에서Dev

루프를 사용하지 않고 목록에서 객체의 색인을 얻는 방법이 있습니까?

분류에서Dev

QTP / UFT에서 WebElement 인식을 위해 abs_x / abs_y 또는 x / y (상대)를 사용하는 것이 얼마나 신뢰할 수 있습니까?

분류에서Dev

고정 크기 및 사전 정의 된 유형 데이터에 대한 C ++ 벡터, 목록 또는 배열

분류에서Dev

정렬 후 두 목록에서 최대 요소의 색인을 얻는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    CSS 또는 Jquery를 사용하여 데스크톱의 경우 절대 위치 및 모바일의 경우 상대 위치에 두 블록 배치

  2. 2

    목록의 모든 항목에 대한 색인 내 서수 위치를 효율적으로 얻는 방법

  3. 3

    배열의 문자열에 대한 인덱스 목록을 얻습니까?

  4. 4

    배열 목록의 각 루프에 대해 열을 지정할 수 있습니까? 씨#

  5. 5

    SQLite의 배열 목록에서 문자열 대신 스피너에서 문자열 주소를 얻습니까?

  6. 6

    절대 위치를 사용하지 않고 div를 서로 위에 배치하는 방법이 있습니까?

  7. 7

    대신 배열의 요소를 절대 값으로 대체하려면 어떻게해야합니까? 씨#

  8. 8

    부모 요소에 상대적인 절대 위치를 사용하는 방법

  9. 9

    절대 및 고정 블록 요소의 위치는 어떻게 치수를 얻습니까?

  10. 10

    링크를 오른쪽 상단 영역에 배치하려면 어떻게해야합니까? (헤더를 상대로 사용하는 절대 위치)

  11. 11

    최대 절전 모드에서 @NamedStoredProcedureQuery를 사용할 때 열 정의 목록이 필수 메시지입니다.

  12. 12

    회전 및 애니메이션 목적으로 사용할 수있는 절대 요소를 다른 절대 요소의 중앙에 배치하는 방법

  13. 13

    객체 배열 목록에서 최대 값을 얻습니까?

  14. 14

    절대 위치 입력 상자에 상대적인 CSS를 사용하여 레이블을 배치하는 방법

  15. 15

    Alt-Tab 목록에서 순서대로 열려있는 창의 순서를 검색 하시겠습니까?

  16. 16

    Java에서 2D 배열 목록의 최대 / 최소를 얻는 방법

  17. 17

    상위 목록에 대한 개체 하위 분류 목록의 색인

  18. 18

    배낭 대시 보드에서 행 또는 열의 색상을 변경하는 방법은 무엇입니까?

  19. 19

    절대 위치를 피하면서 전체 화면 높이를 따라 항목을 배치하는 방법은 무엇입니까?

  20. 20

    목록의 배열 배열을 사용합니까? 씨#

  21. 21

    명령 줄에서 대시 검색 플러그인 (범위) 목록을 얻는 방법은 무엇입니까?

  22. 22

    "위치 : 상대 / 절대"를 사용하지 않고 이미지 위에 제목

  23. 23

    문자열과 정수, 목록 또는 배열을 포함하는 사용자 입력 데이터를 저장하는 효과적인 방법? 씨#

  24. 24

    BigQuery의 각 배열 항목에 대한 '색인'(또는 서수 값)을 가져올 수 있나요?

  25. 25

    하위 문자열을 포함하는 사전에 대해 목록의 하위 문자열에서 일치하는 값을 반환합니다.

  26. 26

    루프를 사용하지 않고 목록에서 객체의 색인을 얻는 방법이 있습니까?

  27. 27

    QTP / UFT에서 WebElement 인식을 위해 abs_x / abs_y 또는 x / y (상대)를 사용하는 것이 얼마나 신뢰할 수 있습니까?

  28. 28

    고정 크기 및 사전 정의 된 유형 데이터에 대한 C ++ 벡터, 목록 또는 배열

  29. 29

    정렬 후 두 목록에서 최대 요소의 색인을 얻는 방법은 무엇입니까?

뜨겁다태그

보관