Creating maxSubarrayXOR Function
First of all, let's create the structure.
static int maxSubarrayXOR(int[] arr, int n)
{
    int ans = 0;     // Initialize result
    return ans;
}
A Simple Solution is to use two loops to find XOR of all subarrays and return the maximum.
static int maxSubarrayXOR(int[] arr, int n)
{
    int ans = 0;     // Initialize result
    // Pick starting points of subarrays
    for (int i = 0; i < n; i++)
    {
        int curr_xor = 0; // to store xor of current subarray
        // Pick ending points of subarrays starting with i
        for (int j = i; j < n; j++)
        {
            curr_xor = curr_xor ^ arr[j];
            ans = Math.Max(ans, curr_xor);
        }
    }
    return ans;
}