You have to parse user input to get a proper integer; and pass this integer to the function instead of array length:
Console.WriteLine("\nWhich number do you wish to search for in the array?");
int key;
while (!int.TryParse(Console.ReadLine(), out key)) { }
BinarySearch(arr, key);
Here we keep trying to parse until it succeeds.