Les attributs peuvent être nommés membres de classes, de structures et d'interfaces. Ils fournissent un mécanisme flexible pour lire, écrire ou calculer la valeur des champs privés. Les attributs peuvent être visualisés comme étant un membre du champ public, mais il. définit en fait une méthode spéciale « d'accesseur » afin que la valeur du champ privé puisse être lue, écrite ou manipulée.
Pour le dire plus clairement, par exemple, nous définissons une classe de personne avec un nom de chaîne privée de membre privé ; dans le monde extérieur, nous instancions un objet personne par, demandons un nom pour per et produisons ceci. name, ou attribuez simplement une valeur à per.name, puis affichez-la ? ? Après l'étude précédente, nous savons que les variables modifiées privées de la classe ne sont pas accessibles aux objets externes (cela ne peut pas être fait directement avec per.name="HC666"^_^). Par conséquent, nous ne pouvons définir qu'une variable modifiée publiquement. setname dans la classe. La méthode getname utilise "HC666" comme paramètre pour écrire et sortir, ce qui est un peu fastidieux. À ce stade, des "attributs" devraient apparaître. Nous pouvons combler cette lacune en définissant un attribut en lecture-écriture. Nom pour nom.
"Accesseur"
L'accesseur d'une propriété contient des instructions exécutables pour obtenir ou définir la propriété. La déclaration de l'accesseur peut contenir un accesseur get (indiquant une lecture seule) ou un ensemble. accesseur (c'est-à-dire en écriture seule), ou les deux (c'est-à-dire à la fois en lecture et en écriture). (Dans l'exemple ci-dessus, nous utilisons l'accesseur get pour afficher le nom et l'accesseur set pour écrire)
Définir les attributs :
Dans l'exemple ci-dessus, nous pouvons définir pour name Un attribut en lecture-écriture Name, utilisez le modificateur public
private string name; //声明name变量 public string Name //声明变量的属性,读写 { get { return name; } //定义读访问器,其实就是一个方法 set { name = value; } //定义写访问器,set 方法有一个隐含的参数value }
accessible aux objets externes. Définissez ensuite un attribut en lecture seule. Par exemple, notre âge est fixe en lecture seule <🎜. >
private uint age=10; //声明变量 age private string Age //声明变量的属性,只读 { get { return age; } //读访问器 }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 { class person { //定义变量name,并且为name定义一个读写属性 private string name; //定义属性 public string Name {//访问器 get { return name; } set { name = value; } //set自带一个value参数 } //定义变量age,并且为age定义一个只读属性 private uint age=10; public uint Age { get { return age; } } } class Program { static void Main(string[] args) { person per = new person(); per.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",per.Name,per.Age); //读属性 } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Test1 {//定义一个person抽象类 abstract class person {//定义抽象属性 public abstract string Name {//读写 get; set; } public abstract uint Age {//只读 get; } } //定义派生类 class student : person { private string name; private uint age=10; //实现抽象属性 public override string Name { get { return name ; } set { name=value; } } public override uint Age { get { return age; } } } class Program { static void Main(string[] args) { student stu = new student(); stu.Name = "HC666"; //执行写入属性 Console.WriteLine("我的名字叫:{0}\t今年 {1} 岁了",stu.Name,stu.Age); //读属性 } } }