Как создать экземпляр класса? - PullRequest
1 голос
/ 27 апреля 2020

Я beignner в C#, я хочу создать новый объект в своем основном классе, Как я go об этом?

House.cs

namespace Assignment
{
public class House
    {
        //the class containing properties of  the house

        //Properties with their GETTERS AND SETTERS

        public int housenumber
            {
                get { return this.housenumber; }
                set { this.housenumber = value; } // Setter declaration
            }

        public string color
            {
                get { return this.color; }
                set { this.color = value; } 
            }
        public string nationality
            {
                get { return this.nationality; }
                set { this.nationality = value; } 
            }
        public string drink
            {
                get { return this.drink; }
                set { this.drink = value; } 
            }
        public string cigarrette
            {
                get { return this.cigarrette; }
                set { this.cigarrette = value; } 
            }
        public string pet
            {
                get { return this.pet; }

                set { this.pet = value; } 
            }
        public House( )
        {
        }
          }

}

но при компиляции моего Основного класса ниже я получаю сообщение об ошибке CS0246 «Не удалось найти тип или имя пространства имен« Дом »(отсутствует директива using или ссылка на сборку?)

Solver .cs

using System;
namespace Assignment
{
public class solver{
    // the main class
   static void Main()
    {
      House myhouse = new House();
    }
}
}

....................................... ........................ .......................... ........................................

Ответы [ 2 ]

0 голосов
/ 27 апреля 2020

Для начала у вас есть свой класс "Дом" в файле " Дом.cs " с большим количеством свойств.

1) Будьте осторожны с нарушением правил именования для имени свойства , Эти слова должны начинаться с заглавной буквы. (drink => Drink).

2) Вы можете очистить свой код, используя тело выражения для своих свойств.

3) Пустой конструктор можно удалить. Итак, ваш класс теперь:

public class House
{
    /* Useless constructor. You can remove this.
        public House() { }
    */
    public int HouseNumber { get; set; } // Expression body with no violations in the name
    public string Color { get; set; }
    public string Nationality { get; set; }
    public string Drink { get; set; }
    public string Cigarrette { get; set; }
    public string Pet { get; set; }
}

Чтобы создать экземпляр вашего объекта, использовать его и установить значения, вы можете сделать это:

using Assignment; // Use this to import your class
using System;

namespace ConsoleApp1 {
    class Program {
        static void Main() {
            // You can instantiate like this 
            var house = new House();
            house.Nationality = "French"; // Unique value assignation using house

            // If you want to set a lot of values for your house object do this:
            var myHouse = new House {
                Cigarrette  = "Camel" ,
                Color       = "Yellow",
                Nationality = "French"
            };

            // Now you have access to the House's properties ( if you use the using ).
            Console.WriteLine( house.Nationality   ); // French
            Console.WriteLine( myHouse.Nationality ); // French

        }
    }
}

И да, вы должны импортировать свой " House.csusing Assignment Если использование не работает, поскольку ваш класс House.cs находится в другом проекте, вы можете сделать это: щелкните правой кнопкой мыши в основном проекте -> Добавить ссылку -> Добавить проект где House.cs

0 голосов
/ 27 апреля 2020

Свойство является функциональным членом класса и не может хранить какие-либо данные самостоятельно. Поэтому вы должны объявить поле для хранения данных для свойства:

private string color;
public string Color
{
    get { return color; }
    set { color = value; } 
}

Но в простом случае мы можем объявить свойство без явного объявления поля:

int Color { get; set; }

. NET компилятор создаст «скрытое» и невидимое поле для хранения данных для этого свойства.

...