Categories
.NET Quiz

Quiz sobre C#

Para los entendidos en C#, ¿Qué devuelve la siguiente función (y por qué) ?

csharp:

using System;

class Q1: System.NullReferenceException {
  static int Main() {
    try {
      string valor = "Value: " + (Q1)null;
      return valor.Length;
    }
    catch (Q1 q) {
      throw;
    }
  }
  public static string operator +(string msg, Q1 q) {
    return msg + q;
  }
}

Posibles respuestas

  • Retorna la longitud de la variable valor
  • Se produce un NullReferenceException
  • Se produce un StackOverflowException

Es una ligera adaptación del Quiz Sharp 1 de Adrian Florea

Solución

El código mostrado genera un StackOverflowException, porque la sobrecarga del operador "+" se hace sobre un objeto de tipo string en el primer sumando y un objeto de tipoQ1 en el segundo, es por eso que se hace recursivo (return msg+Q1;) como menciona Kiz.