Obtener el nombre de un objeto en C#

publicado por: Anonymous

¿Puedo obtener el nombre con el que e instanciado un objeto y guardarlo en un string?

     float[] objeto1 = new float[4];
     float[] objeto2 = new float[5];
     new Vectores().MejoresAlumnos(objeto1 , objeto2);

     class Vectores
        {               
            public string MejoresAlumnos(float[] notas1, float[] notas2)
                {
                   this.notas1 = notas1;
                   this.notas2 = notas2;
                   return notas1.Length > notas2.Length ? notas1.ToString() : notas2.ToString();
                }
    }

Evidentemente con el .toString() no es posible hacerlo pero… ¿Hay alguna manera de conseguirlo?

Me gustaría poder recibir el nombre del parámetro que le paso al método MejoresAlumnos, es decir, en este ejemplo simple quisiera recibir un string con el valor de objeto2

solución

Esto retorna el nombre de la variable local dentro del mismo método.

static void Main(string[] args)
{
    float[] objeto1 = new float[4];
    float[] objeto2 = new float[5];
    Console.WriteLine(GetName(()=>objeto1));
}

static string GetName<T>(Expression<Func<T>> expr)
{
    return ((MemberExpression)expr.Body).Member.Name;
}

Imprime:

objeto1

Si tienes C# 6.0 o superior alcanza con

Console.Write(nameof(objeto1));
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *