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.