Переполнение стека при создании экземпляра класса - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Изучаю C#, решил попробовать создать дерево классов. Базовый абстрактный класс - мебель(имеет материал и вес), от него два производных: стол(добавляет площадь поверхности) и стул(количество ножек). Вроде бы ничего сложного нет, но появились проблемы. Во-первых, в С++ можно было сделать так: class MyClass : private BaseClass Здесь уже такого нет, то есть наследование всегда public? Во-вторых, при попытке создать экземпляр класса возникает переполнение стека. Вот код: Первый файл
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MyNewFile;
namespace tempSharp
{
    class Program
    {
        static void Main(string[] args)
        {
            CTable Table1 = new CTable(50.0, TMaterial.glass, 40.0);
            CChair Chair = new CChair(4, TMaterial.wood, 20.0);
            CTable Table2 = new CTable(40.0, TMaterial.plastic, 15.0);
            Console.WriteLine(Table1.ToString());
            Console.WriteLine(Table2.ToString());
            Console.WriteLine(Chair.ToString());
        }
    }
}
Второй файл
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
 
#region TMaterial
public enum TMaterial
{
    wood,
    plastic,
    glass
};
#endregion
namespace MyNewFile
{
    //Класс мебели
    #region CFurniture
    public abstract class CFurniture
    {
        public TMaterial m_Material
        {
            get
            {
                return m_Material;
            }
            protected set
            {
                m_Material = value;
            }
        }
        public double m_Weight
        {
            get
            {
                return m_Weight;
            }
            protected set
            {
                if(value>0.0)
                    m_Weight = value;
            }
        }
        public CFurniture(TMaterial NewMaterial, double NewWeight)
        {
            m_Material = NewMaterial;
            m_Weight = NewWeight;
        }
    }
    #endregion
    //Стол
    #region CTable
    public class CTable : CFurniture
    {
        public double m_AreaSurface
        {
            private set
            {
                if(value>0.0)
                    m_AreaSurface = value;
            }
            get
            {
                return m_AreaSurface;
            }
        }
        public CTable(double NewAreaSurface, TMaterial NewMaterial, double NewWeight)
            : base(NewMaterial, NewWeight)
        {
            m_AreaSurface = NewAreaSurface;
        }
        public override string ToString()
        {
            return string.Format("Стол, площадь поверхности = {0}, материал - {1}, вес = {2}", m_AreaSurface, m_Material, m_Weight);
        }
    }
    #endregion
    //Стул
    #region chair
    public class CChair : CFurniture
    {
        public byte m_Legs
        {
            private set
            {
                if ((value > 2) && (value < 5))
                    m_Legs = value;
            }
            get
            {
                return m_Legs;
            }
        }
        public CChair(byte NewLegs, TMaterial NewMaterial, double NewWeight)
            : base(NewMaterial, NewWeight)
        {
            m_Legs = NewLegs;
        }
        public override string ToString()
        {
            return string.Format("Стул, кол-во ножек = {0}, материал - {1}, вес = {2}", m_Legs, m_Material, m_Weight);
        }
    }
    #endregion
}
Исключение возникает при попытке вызова базового конструктора... Не подскажите, что я делаю не так? Заранее спасибо

Решение задачи: «Переполнение стека при создании экземпляра класса»

textual
Листинг программы
public double m_AreaSurface
        {
            private set
            {
                if(value>0.0)
                    m_AreaSurface = value;
            }
            get
            {
                return m_AreaSurface;
            }
        }

Оцени полезность:

9   голосов , оценка 4.222 из 5
Похожие ответы