Рассмотрите следующий код, который я написал для своего собственного образования. У меня есть основной метод, статический метод и два класса - hold и subshold. Поддержание продолжается.Передано справки, получая значение подкласса
class Program
{
static void Main(string[] args)
{
hold h = new hold();
h.aa = 88;
Console.WriteLine("In main " + h.aa);
thismethod(h);
Console.WriteLine("In main2 " + h.aa);
Console.WriteLine("In main3 " + h.ss); //ERROR
Console.ReadKey();
}
static void thismethod (hold h) {
Console.WriteLine("In thismdethod " + h.aa);
h.aa += 1;
Console.WriteLine("In thismdethod1 " + h.aa);
h = null;
subhold subhold = new subhold();
subhold.aa = 8888;
subhold.ss = 22222;
h = subhold;
}
}
class hold
{
public int aa { get; set; }
}
class subhold : hold
{
public int ss { get; set; }
}
Я пытаюсь получить доступ к h.ss. Прямо сейчас у меня нет доступа к нему. Как я могу получить доступ к h.ss
из основного метода?
Пара вещей, первый базовый класс не может получить доступ к свойствам/членам дочернего класса. Второе чтение о [Параметр, проходящий в C# от Jon Skeet] (http://www.yoda.arachsys.com/csharp/parameters.html) – Habib
'h' является' hold', а не 'subhold'. У него нет свойства 'ss'. – Blorgbeard
Я также пробовал использовать 'ref', такой как' thismethod (ref h) 'с' static void thidmethod (ref hold h) ' – Zuzlx