J'ai cet exemple de code. Ce que je veux faire est de faire en sorte que la valeur "Nums" ne puisse être écrite qu'en utilisant la méthode "AddNum".Faire une liste en lecture seule dans C#
namespace ConsoleApplication1
{
public class Person
{
string myName = "N/A";
int myAge = 0;
List<int> _nums = new List<int>();
public List<int> Nums
{
get
{
return _nums;
}
}
public void AddNum(int NumToAdd)
{
_nums.Add(NumToAdd);
}
public string Name { get; set; }
public int Age { get; set; }
}
}
D'une certaine façon, j'ai essayé un tas de choses en ce qui concerne AsReadOnly() et le mot-clé en lecture seule, mais je ne peux pas sembler obtenir à faire ce que je veux faire.
Voici l'exemple du code que j'ai pour accéder à la propriété.
Person p1 = new Person();
p1.Nums.Add(25); //access 1
p1.AddNum(37); //access 2
Console.WriteLine("press any key");
Console.ReadLine();
Je veux vraiment « accès 1 » à l'échec, et « l'accès 2 » à être le seulement manière que la valeur peut être réglée. Merci d'avance pour l'aide.
vous l'avez pointé dans votre propre tag: utilisez ['ReadOnlyCollection'] (https://msdn.microsoft.com/fr-fr/library/ms132474 (v = vs.110) .aspx) pour votre propriété ou faites juste une copie de votre liste dedans (de cette façon un utilisateur peut changer sa copie mais pas votre état interne) – Carsten
Essayez de faire Nums une fonction qui retourne un tableau, pas une liste. – LarsTech
utiliser "Liste privée Nums" au lieu de public Liste Numéros –