To try out the search algorithm, add the following code to the Main method and step through the code in the debugger to see the results. You can see that half of the searches yield the index of the search item, whilst the other half return -1 because the item being searched for is not present.
int[] items = new int[]
{ 10, 15, 18, 25, 29, 31, 36, 41, 44, 48, 49, 50, 52, 54, 58, 61, 65, 70, 95, 99 };
int index;
index = BinarySearch(items, 36); // 6
index = BinarySearch(items, 37); // -1
index = BinarySearch(items, 1000); // -1
index = BinarySearch(items, 10); // 0
index = BinarySearch(items, 99); // 19
index = BinarySearch(new int[] { }, 1000); // -1