Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Наследование


Автор: strS 11.4.2013, 07:01
Добрый день!


Код

public class A
{
public string name {get;set;}
}

public class B : A
{
public string sometext {get;set;}
}



Возможно ли передать значение поля name от A к B, не делая это явно (B.name = A.name)

Код

B = (B)A;


компилятр ругается что нельзя.

Автор: SKrivosein 11.4.2013, 15:05
Код

public string name { get; set; }

Это не поле, а автоматическое свойство.
В=В(А)
Это что? Это ты пытаешся привести класс А к классу В? Как это относится к вопросу?
Напиши пожалуйста яснее.

Автор: Arantir 11.4.2013, 15:16
Цитата(strS @  11.4.2013,  06:01 Найти цитируемый пост)
Возможно ли передать значение поля name от A к B,

B.name - не? Поля наследуются автоматически.

Автор: SKrivosein 11.4.2013, 15:33
Arantir да нет же явного поля, есть автоматическое свойство которое генерирует приватное поле которое с кода С# вообще вызвать нельзя. Поэтому и непонятно что творится.
А что внизу написано, так это догадайтесь сами...

Автор: Экскалупатор 11.4.2013, 22:47
Цитата(SKrivosein @  11.4.2013,  14:33 Найти цитируемый пост)
Arantir да нет же явного поля, есть автоматическое свойство которое генерирует приватное поле которое с кода С# вообще вызвать нельзя. Поэтому и непонятно что творится.

какая разница для пользователя класса?
главное что они наследуются и все будет работать.

Автор: SKrivosein 12.4.2013, 02:11
В принципе да, но вопрос задан так что непонятно что хотели...
Код

class Program
    {
        static void Main(string[] args)
        {
            ClassB classB = new ClassB();
            classB.NameA = "что угодно";
            classB.SomeMethod();

            Console.WriteLine(classB.NameB);
            Console.ReadLine();
        }
    }

    public class ClassA
    {
        public string NameA { get; set; }
    }

    public class ClassB : ClassA
    {
        public string NameB { get; set; }

        public void SomeMethod()
        {
            this.NameB = this.NameA;
        }
    }

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)