私はこれがItemAとItemBの両方の名前を教えてくれることを望みます。それは私に "Subitem \ nSubitem"と言うべきではなく、代わりに "Item \ nSubitem"を教えてくれます。これは、Subitemクラスで定義された "Name"変数が、基本Itemクラスで定義された "Name"変数とは技術的に異なる変数であるためです。元の変数を新しい値に変更したい。なぜこれが最も簡単なことではないのか分かりません。私は実際にの変数をに上書きする方法を見つけることができませんでした。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";
}
}
* virtual * - a * Property *( "Getter")または* Method *のようなものが必要です。メンバー変数は* never * virtualです。 –