Это похоже на дубликат C # добавить проверку на метод установки
Вы добавили сложность инициализации свойства через конструктор, что опять-таки не является стандартной практикой проектирования. Существуют определенные конструкции, которые вы можете поместить в реализацию, потому что компилятор не может помешать вам сделать это, однако это не означает, что вы должны это делать.
Также стоит прочитать о передовых практиках в c # для инициализации конструктора - https://softwareengineering.stackexchange.com/questions/51062/constructor-parameter-validation-in-c-best-practices
Я обновляю ответ, чтобы включить пример кода, как показано ниже -
//Independent storage, not part of Person class.
private static List<Person> PersonList = new List<Person>();
static void Main()
{
Console.WriteLine("Geef de naam van de persoon: ");
var name = Console.ReadLine();
Console.WriteLine("Geef de leeftijd van de persoon: ");
var age = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("Geef het geslacht van de persoon [MOET 'v' OF 'm' ZIJN]: ");
var gender = Console.ReadLine();
//PersonList.Add(new Person("Person1", 25, "M"));
PersonList.Add(new Person(name, age, gender));
var p = PersonList[0];
if(p.IsPersonModelStateValid == true)
{
Console.WriteLine("Person state is valid");
}
else
{
Console.WriteLine("Person state is invalid");
}
p.PrintPerson();
Console.Error.WriteLine("Done!");
}
И класс Person подвергается рефакторингу, как показано ниже -
using System;
using System.Collections;
using System.Collections.Generic;
namespace BSearch
{
public class Person
{
public string name;
public int age;
private string gender;
private bool isPersonStateValid;
public Person(string _name, int _age, string _gender)
{
isPersonStateValid = true;
this.name = _name;
this.age = _age;
this.Gender = _gender;
}
public string Gender
{
get { return gender; }
set
{
//value = de doorgegeven data
if (value == "m" || value == "v")
{
gender = value;
}
else
{
gender = "Error: not a valid gender!";
isPersonStateValid = false;
}
}
}
public bool IsPersonModelStateValid
{
get { return isPersonStateValid;}
private set { isPersonStateValid = value; }
}
/*public static void addPerson(string name, int age, string _gender)
{
Personlist.Add(new Person(name, age, _gender));
}*/
public static void Speak(string name, int age, string _gender)
{
//TODO : The logic to make the person speak goes in here.
}
public void PrintPerson()
{
Console.WriteLine("name : " + this.name);
Console.WriteLine("age : " + this.age);
Console.WriteLine("gender : " + this.gender);
}
}
}