StudentSC Ответов: 2

Как вызвать класс value class в C#?


Привет.
Мой класс называется "студенты". И я держу переменную failstudents в классе вот так.
Я хотел бы вызвать эту переменную в другом классе и использовать оператор want to if.
Разве я называю это так?

Как вызвать другой класс и оператор if.




общественная список <строка> У failstudents=новый список<строка&ГТ;();

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

Студентов.в CS

общественная список <строка> У failstudents=новый список<строка&ГТ;();

Процесс.в CS

If(Students.failstudents.count !=0)
{

}

Maciej Los

Является ли объект Student просто строкой?

[no name]

failstudents ведут список неудач.Я хочу провалить список use if statement и использовать другой класс.может быть, я сказал вам неправильно наверху.Но я хочу использовать этот список в другом классе для вычисления.

2 Ответов

Рейтинг:
1

OriginalGriff

Существует два типа "элементов", которые может иметь класс: static элементы, и instance элементы (где элемент-это поле, свойство, метод, событие или делегат)

Один static элемент является общим для всех экземпляров и доступен через имя класса.
Один instance элемент уникален для каждого отдельного экземпляра класса и доступен через переменную, содержащую ссылку на экземпляр.

Задумайтесь на мгновение об автомобилях: все автомобили имеют свой цвет, но какой именно, зависит от того, о каком конкретном автомобиле вы говорите. Моя машина черная, ваша-красная, эта-зеленая, та - синяя. Colour является ли экземпляр свойством класса Car, потому что вам нужно иметь конкретный экземпляр автомобиля, чтобы задать вопрос "какого он цвета?" - вы не можете сказать: "какого цвета автомобиль?" потому что это бессмысленно, не говоря, какую машину вы имеете в виду.
Но машины есть static свойства также: вы можете спросить: "сколько колес у автомобиля?" потому что у всех машин четыре колеса. (Если бы у него было два, это был бы мотоцикл, а не автомобиль)

Поэтому, если вы хотите получить доступ к списку через имя класса, как в вашем примере, оно должно быть общим для всех экземпляров, т. е. static :

public static List<string> failstudents = new List<string>();


BillWoodruff

+5

Рейтинг:
1

BillWoodruff

имхо, один из возможных способов сделать ваш намерение более ясным является различие между сущностью/классом, представляющим собой пример и сущность/класс, представляющий собой коллекция экземпляров, и/или управление из примеров.

Считать:

public class Student
{
    // ctor
    public Student(string name)
    {
        Name = name;
        StudentManager.RegisterStudent(this);
    }

    // fields that hold student data

    public bool IsPassing { get; private set; }

    // ... more student data
    public string Name { get; private set; }

    private double _averagegrade;
    public double AverageGrade {
        get
        {
            return _averagegrade;
        }

        internal set // for future: find a way to only allow Manager class to set this
        {
            _averagegrade = value;

            IsPassing = _averagegrade > StudentManager.FailLevel;

            if (! IsPassing)
            {
                // show a warning ?
                throw new ArgumentOutOfRangeException("", "\r\r\r\nAverage Grade: FAILING\r\n");
            }
        }
    }

    public void AddGrade(double grade)
    {
        StudentManager.AddGrade(this, grade);
    }
}

public static class StudentManager
{
    public static double FailLevel = 50.0;

    // map students to grades
    public static Dictionary<Student, List<double>> StudentGrades = new Dictionary<Student, List<double>>();

    // ctor
    public static void RegisterStudent(Student student)
    {
       // left for you to implement
    }

    public static void AddGrade(Student student, double grade)
    {
       // left for you to implement
    }

    public static double GetAverageGrade(Student student)
    {
        var grades = StudentGrades[student];
        return grades.Sum() / grades.Count;
    }

    public static int NumberOfStudents
    {
        get { return StudentGrades.Count; }
    }

    public static List<Student> GetFailingStudents
    {
       // left for you to implement
    }
}