码迷,mamicode.com
首页 > Windows程序 > 详细

C# 论属性的重要性

时间:2014-11-25 23:16:22      阅读:301      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   ar   color   os   使用   sp   

说到属性,那就离不开字段。什么是字段呢?大家知道C#是一门面向对象的语言。面向对象最重要的是类,类可以包括的就是字段(Field)和方法(Method)。那回来一说,什么是属性呢?属性,便是对字段的赋值和取值进行限制。如何限制呢?下面我们先谈没有属性的情况。

我们先定义一个学生类...

bubuko.com,布布扣
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication59
 8 {
 9     class student
10     {
11         /// <summary>
12         /// /字段 必须设置为public,才能为其他类所赋值
13         /// </summary>
14         public string name;//设置姓名
15         public int num;    //设置学号
16         public char sex;   //设置性别
17         public double grade;//设置成绩
18 
19         //此处省略方法代码的书写
20     }
21     class Program
22     {
23         static void Main(string[] args)
24         {
25             student stu = new student();
26             stu.name = "MyName";
27             stu.num = 100001;
28             stu.sex =F;
29             stu.grade = 1.5;
30 
31             Console.WriteLine("我是一名学生,我叫{0},我的学号是{1},我的性别是{2},我考试的成绩是{3}",stu.name,stu.num,stu.sex,stu.grade);
32         }
33     }
34 }
View Code

由于没有使用到属性,所以字段必须设置为public才能为其他类赋值。

下面我们再来看一下属性是如何写以及用的。

bubuko.com,布布扣
 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6 
 7 namespace ConsoleApplication59
 8 {
 9     class student
10     {
11         /// <summary>
12         /// /字段 因为使用了属性,所以字段的限定可以是private(不写则默认为private)。
13         /// </summary>
14         string name;//设置姓名
15         public string Name
16         {
17             get { return name;}
18             set { name = value;}
19         }
20         int num;    //设置学号
21         public int Num
22         {
23             get { return num; }
24             set { num = value; }
25         }
26         char sex;   //设置性别
27         public char Sex
28         {
29             get { return sex; }
30             set { sex = value; }
31         }
32         double grade;//设置成绩
33         public double Grade
34         {
35             get { return grade; }
36             set { grade = value; }
37         }
38 
39         //此处省略方法代码的书写
40     }
41     class Program
42     {
43         static void Main(string[] args)
44         {
45             student stu = new student();
46             stu.Name = "MyName";
47             stu.Num= 100001;
48             stu.Sex =F;
49             stu.Grade = 1.5;
50 
51             Console.WriteLine("我是一名学生,我叫{0},我的学号是{1},我的性别是{2},我考试的成绩是{3}",stu.Name,stu.Num,stu.Sex,stu.Grade);
52         }
53     }
54 }
View Code

上下两份代码有什么不同呢?一个是把字段的限定从public改为private了,一个是在每个字段后边添加了属性。最后一个,是在赋值和取值(输出)的时候,调用了实例的属性作为输入和输出。所以应征了上面那句话,属性,就是对字段的赋值和取值进行限定。当然上述只是证明了可以通过属性来对字段进行赋值和取值。

为什么通过属性可以进行赋值和取值呢?因为属性对应有两个方法。就是set()和get()方法。set()方法用于赋值,get()方法用于取值。

当使用了属性之后,应该把字段设置为private属性,以对字段进行保护。所以只能通过属性来赋值和取值,表面上是通过属性,其实通过断点调试可以知道,赋值和取值最终还是通过属性的方法,通过字段来赋值。

 

C#最大的特点就可以进行窗体编程。窗体编程总少不了窗体间传值,下面我们来看看。如何通过属性这种东西来传值。

假设现在我们有两个窗口,一个是Form1,另一个是Form2。Form1是主窗口类,Form2是子窗口类。我们的目的是,把子窗口TextBox的值传递到主窗口的TextBox值。

在Form2里添加代码如下:

bubuko.com,布布扣
1 public string strr
2 {
3     get{return textbox1.Text};  
4 }
View Code

现在在Form1的button控件事件里,实例化Form2,如下:

bubuko.com,布布扣
1 Form2 f2 = new Form2();
2 f2.ShowDialog();
3 if(f2.DialogReasult == DialogReasult.OK)
4 {
5    textBox1.Text = f2.strr;  
6 }
View Code

如此,便可以实现窗体间的传值,(非实时)。

如何理解呢?我们把子窗体类Form2只单纯地视为一个类,比如什么学生类啊,图书类啊等等。然后把textbox1.Text视为类里的一个字段。strr视为一个字段。

通过实例化出子窗口f2,我们可以在主窗口,用对象->属性的方法,进行赋值或取值。(上边是“取值”),如此便通过用属性完成了窗体间的传值。需要注意的是,主窗体与子窗体都不用写this.Close(),便可实现关闭。

转载请注明 博客园 :http://www.cnblogs.com/gu-zhan/ 老咸

 

C# 论属性的重要性

标签:style   blog   http   io   ar   color   os   使用   sp   

原文地址:http://www.cnblogs.com/gu-zhan/p/4122045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!