Estrutura de Dados criacao de um vetor

tenho tentado adicionar ou consultar e nao tem dado certo, sempre esta entrando no else. Não sei se tem algum erro nos metodos, mas se tem não to conseguindo achar.

class Vetor
{
    private int max;
    private int ultimo;
    private int[] x;

    public Vetor(int tam)
    {
        max = tam;
        ultimo = - 1;
        x = new int[max];
    }

    public void consulta(int k)
    {
        if (k >= 0 && k <= ultimo)
        {
            Console.WriteLine("Valor Consultado: " + x[k]);
        }
        else
        {
            Console.WriteLine("Indice invalido!");
        }
    }

    public void atribui(int k, int val)
    {
        if (k >= 0 && k <= ultimo)
        {
            x[k] = val;
            Console.WriteLine("Adicionado!");
        }
        else
            Console.WriteLine("Indice Invalido!");
    }

    public void insereK(int k, int val)
    {
        if (ultimo == (max - 1))
        {
            Console.WriteLine("Vetor Cheio!");
        }
        if (k >= 0 && k <= ultimo)
        {
            for (int i = ultimo; i >= k; i--)
            {
                x[i + 1] = x[i];

                x[k] = val;
                ultimo = ultimo + 1;
            }
        }
    }

    public void insereUltimo(int val)
    {
        if (ultimo == (max - 1))
            Console.WriteLine("Vetor Cheio!");
        ultimo = ultimo + 1;
        x[ultimo] = val;

    }

    public void eliminaK(int k)
    {
        if (k >= 0 && k <= ultimo)
        {
            for (int i = k; i <= ultimo - 1; i++)
            {
                x[i] = x[i + 1];

                ultimo = ultimo - 1;
            }
        }
        else
            Console.WriteLine("Indice Invalido!");
    }

    public void eliminarUltimo()
    {
        if (ultimo == -1)
            Console.WriteLine("Lista Vazia!");

        ultimo = ultimo - 1;
    }
}