Finding the last index of an array

后端 未结 11 2174
不思量自难忘°
不思量自难忘° 2020-12-10 00:43

How do you retrieve the last element of an array in C#?

相关标签:
11条回答
  • 2020-12-10 01:06

    Also, starting with .NET Core 3.0 (and .NET Standard 2.1) (C# 8) you can use Index type to keep array's indexes from end:

    var lastElementIndexInAnyArraySize = ^1;
    var lastElement = array[lastElementIndexInAnyArraySize];
    

    You can use this index to get last array value in any lenght of array. For example:

    var firstArray = new[] {0, 1, 1, 2, 2};
    var secondArray = new[] {3, 3, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5};
    var index = ^1;
    var firstArrayLastValue = firstArray[index]; // 2
    var secondArrayLastValue = secondArray[index]; // 5
    

    For more information check documentation

    0 讨论(0)
  • 2020-12-10 01:07

    Is this worth mentioning?

    var item = new Stack(arr).Pop();
    
    0 讨论(0)
  • 2020-12-10 01:07

    New in C# 8.0 you can use the so-called "hat" (^) operator! This is useful for when you want to do something in one line!

    var mystr = "Hello World!";
    var lastword = mystr.Split(" ")[^1];
    Console.WriteLine(lastword);
    // World!
    

    instead of the old way:

    var mystr = "Hello World";
    var split = mystr.Split(" ");
    var lastword = split[split.Length - 1];
    Console.WriteLine(lastword);
    // World!
    

    It doesn't save much space, but it looks much clearer (maybe I only think this because I came from python?). This is also much better than calling a method like .Last() or .Reverse() Read more at MSDN

    Edit: You can add this functionality to your class like so:

    public class MyClass
    {
      public object this[Index indx]
      {
        get
        {
          // Do indexing here, this is just an example of the .IsFromEnd property
          if (indx.IsFromEnd)
          {
            Console.WriteLine("Negative Index!")
          }
          else
          {
            Console.WriteLine("Positive Index!")
          }
        }
      }
    }
    

    The Index.IsFromEnd will tell you if someone is using the 'hat' (^) operator

    0 讨论(0)
  • 2020-12-10 01:10

    The array has a Length property that will give you the length of the array. Since the array indices are zero-based, the last item will be at Length - 1.

    string[] items = GetAllItems();
    string lastItem = items[items.Length - 1];
    int arrayLength = array.Length;
    

    When declaring an array in C#, the number you give is the length of the array:

    string[] items = new string[5]; // five items, index ranging from 0 to 4.
    
    0 讨论(0)
  • 2020-12-10 01:10

    Array starts from index 0 and ends at n-1.

    static void Main(string[] args)
    {
        int[] arr = { 1, 2, 3, 4, 5 };
        int length = arr.Length - 1;   // starts from 0 to n-1
    
        Console.WriteLine(length);     // this will give the last index.
        Console.Read();
    }
    
    0 讨论(0)
提交回复
热议问题