DEV Community

Cover image for C# Tip: Access items from the end of the array using the ^ operator
Davide Bellone
Davide Bellone

Posted on • Originally published at code4it.dev on

C# Tip: Access items from the end of the array using the ^ operator

Say that you have an array of N items and you need to access an element counting from the end of the collection.

Usually, we tend to use the Length property of the array, and then subtract the number corresponding to the position we want to reach:

string[] values = {
    "alfa",
    "bravo",
    "charlie",
    "delta",
    "echo",
    "foxtrot",
    "golf"
};

var echo = values[values.Length - 3];
Enter fullscreen mode Exit fullscreen mode

As you can see, we are accessing the same variable twice in a row: values[values.Length - 3].

We can simplify that specific line of code by using the ^ operator:

string[] values = {
    "alfa",
    "bravo",
    "charlie",
    "delta",
    "echo",
    "foxtrot",
    "golf"
};

var echo = values[^3];
Enter fullscreen mode Exit fullscreen mode

Yes, that's just syntactic sugar, but it can help make your code more readable. In fact, if you have a look at the IL code generated by both examples, they are perfectly identical. IL is quite difficult to read and understand, but you can acknowledge that both syntaxes are equivalent by looking at the decompiled C# code:

C# decompiled code

Performance is not affected by this operator, so it's just a matter of readability.

Clearly, you still have to take care of array bounds - if you access values[^55] you'll get an IndexOutOfRangeException.

Pay attention that the position is 1-based!

string[] values = {
    "alfa",
    "bravo",
    "charlie",
    "delta",
    "echo",
    "foxtrot",
    "golf"
};

Console.WriteLine(values[^1]); //golf
Console.WriteLine(values[^0]); //IndexOutOfRangeException
Enter fullscreen mode Exit fullscreen mode

Further readings

Using ^ is a nice trick that many C# developers don't know. There are some special characters that can help us but are often not used. Like the @ operator!

🔗 C# Tip: use the @ prefix when a name is reserved

This article first appeared on Code4IT 🐧

Wrapping up

In this article, we've learned that just using the right syntax can make our code much more readable.

But we also learned that not every new addition in the language brings performance improvements to the table.

I hope you enjoyed this article! Let's keep in touch on Twitter or on LinkedIn, if you want! 🤜🤛

Happy coding!

🐧

Top comments (0)