Immaginiamo di avere una classe che contiene un vettore, i quali primi valori sono visibili solo agli amministratori, gli altri a tutti. Il codice potrebbe essere più o meno così:

public class VectorInfo
{
    public VectorInfo()
    {
        this.data = new string[] { "Admin1", "Admin2", "Admin3", "Std1", "Std2", "Std3" };
    }

    [PrincipalPermission(SecurityAction.Demand, Role="Administrators")]
    public string GetAdminValue(uint idx)
    {
        if (idx < data.Length)
            return data[idx];
        return string.Empty;
    }

    public string GetValue(uint idx)
    {
        if (idx + adminLastIndex < data.Length)
            return data[idx + adminLastIndex];
        else
            return string.Empty;
    }

    private string[] data;
    private const int adminLastIndex = 2;
}

Non voglio soffermarmi sul design, ma solamente sull'algoritmo. Secondo voi, che cosa c'è di sbagliato?