Member 13586971 Ответов: 1

Пожалуйста, помогите мне понять математику, лежащую в основе кода и как он выполняется


using System;

namespace StudyExample1
{
    class Program
    {
        class A
        {
            static int Fa = 2;
            protected A(int a) { Fa += a; }

            protected A() { Fa++; }

            protected int f 
            { 
                get { return Fa++; }
                set { Fa += value; }
            }
        }

        class B : A
        { 
            int Fb = 6;
            public B(int a) { Fb-=2*a; }
            public B(int a, int b)
                
            {
                Fb += b+a;
            }
            public new int f 
            {
                get { return Fb; }
                set { Fb += value; }
            }
            public override string ToString()
            {
                base.f=-1;
                return String.Format("{0}", base.f - f);
            }
        }

        static void Main(string[] args)
        {
            B obj1 = new B(2), obj2 = new B(2, 1);
            obj1.f = 1;
            obj2.f = 2;
            Console.Write(obj1);
            Console.Write(obj2);
            Console.Write(obj2);
            Console.Write(obj1);
             
        }
    }
}


Что я уже пробовал:

using System;

namespace StudyExample1
{
    class Program
    {
        class A
        {
            static int Fa = 2;
            protected A(int a) { Fa += a; }

            protected A() { Fa++; }

            protected int f 
            { 
                get { return Fa++; }
                set { Fa += value; }
            }
        }

        class B : A
        { 
            int Fb = 6;
            public B(int a) { Fb-=2*a; }
            public B(int a, int b)
                
            {
                Fb += b+a;
            }
            public new int f 
            {
                get { return Fb; }
                set { Fb += value; }
            }
            public override string ToString()
            {
                base.f=-1;
                return String.Format("{0}", base.f - f);
            }
        }

        static void Main(string[] args)
        {
            B obj1 = new B(2), obj2 = new B(2, 1);
            obj1.f = 1;
            obj2.f = 2;
            Console.Write(obj1);
            Console.Write(obj2);
            Console.Write(obj2);
            Console.Write(obj1);
             
        }
    }
}

[no name]

Что вы ожидаете получить?
Что ты получаешь?
Какие у вас сомнения по поводу разницы?

j snooze

Мы понятия не имеем, что вы пытаетесь сделать. Вы просто сбросили кучу кода и сказали: "я не знаю, что это такое, вы мне скажите"...возможно, вам следует спросить своего учителя, если вы не понимаете, что у нас нет учебной программы или спецификаций о том, что вы изучаете или пытаетесь выполнить с помощью этого кода.

1 Ответов

Рейтинг:
0

________________

Ряд за рядом:

namespace StudyExample1
{
    class Program
    {
        class A
        {
            static int Fa = 2; //this variable is visible by class name like A.Fa. So, it value exists in only one place in memory
			                   // you can create many objects od A, but they will have same Fa.
            protected A(int a) { Fa += a; } //constructor, add to Fa value;
 
            protected A() { Fa++; } // constructor, adds to Fa 1
 
            protected int f //property
            { 
                get { return Fa++; }// always return Fa + 1, but not change Fa
                set { Fa += value; }//when set, add to Fa the value
            }
        }
 
        class B : A
        { 
            int Fb = 6;//inner variable
            public B(int a) { Fb-=2*a; }//constructor
            public B(int a, int b)//overloaded constructor- same name, other params
                
            {
                Fb += b+a;
            }
            public new int f //aha, hiding the property f od base class A - when called from object of type B, will return 6
            {
                get { return Fb; }
                set { Fb += value; }//set add to Fb the value
            }
            public override string ToString()
            {
                base.f=-1;// call to base class property (add -1 to Fa)
                return String.Format("{0}", base.f - f);// call to base f (get) than call child class B property, than substract one from another.
            }
        }
 
        static void Main(string[] args)
        {
            B obj1 = new B(2), obj2 = new B(2, 1); //Pay attention, all B obj1 and obj2 have same Fa - and different Fb.
            obj1.f = 1;
            obj2.f = 2;
            Console.Write(obj1);
            Console.Write(obj2);
            Console.Write(obj2);
            Console.Write(obj1);
             
        }
    }
}