Quiero que esto me diga el Nombre de ambos ItemA y ItemB. Debería decirme "Subitem \ nSubitem", pero en su lugar me dice "Item \ nSubitem". Esto se debe a que la variable "Nombre" definida en la clase Subtema es técnicamente una variable diferente a la variable "Nombre" definida en la clase de Artículo base. Quiero cambiar la variable original a un nuevo valor. No entiendo por qué esto no es lo más fácil que haya existido, teniendo en cuenta que la virtualización y la anulación funcionan perfectamente con los métodos. He sido completamente incapaz de averiguar cómo realmente anular una variable.¿Cómo anulo, no oculto, una variable miembro (campo) en una subclase C#?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Example
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine(ItemA.Name);
System.Console.WriteLine(ItemB.Name);
System.Console.ReadKey();
}
static Item ItemA = new Subitem();
static Subitem ItemB = new Subitem();
}
public class Item
{
public string Name = "Item";
}
public class Subitem : Item
{
new public string Name = "Subitem";
}
}
Necesita algo que pueda ser * virtual * - a * Propiedad * ("Getter") o un * Método *. Las variables de miembro son * nunca * virtuales. –