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

C#字段 属性

时间:2015-01-12 14:35:44      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

  1 /*字段 属性
  2  * User: YuanWei
  3  * Date: 2015/1/11
  4  * Time: 20:03
  5  * 先有封装,然后才有继承,最后才能谈多态
  6  * 多态意味着一个方法或类型可以有多种形式的实现
  7  * 方法多态:new virtual override,接口的成员实现
  8  * 类型多态,继承  接口的实现
  9  * 封装:对象将数据和方法组合到一起,还可以隐藏数据和行为,使用属性封装字段
 10  * 封装的级别:5个:public internal protected,private,protected internal
 11  * 类成员的默认访问级别是private
 12  * 方法代表行为
 13  * 属性代表数据
 14  * 优先写自动实现的属性而不是由支持字段的属性
 15  * Indent缩进,initial最初的,initialize初始化,catalog目录,动词是登记的意思,validate验证,assignment分配,工作任务
 16  * implement 实现,instance实例,declare声明,definition定义,
 17  * 一般最好只在属性实现的内部访问支持字段,在属性实现的外部最好不要使用支持字段
 18  * value是set方法的参数,属性里面的两个方法:public void set(属性类型 value){},public 属性的类型 get(){},也可以为这两个访问方法加上修饰符
 19  * 在这里面写程序的最高境界是什么线都不会报,那就是完美的,最优的写法了
 20  * 写代码就要讲求最优的写法,代码的规范性
 21  */
 22 using System;
 23 using System.IO;
 24 
 25 namespace LearningClass
 26 {
 27     class Program
 28     {
 29         //构造器调用的是System.Object的构造器Finalize()
 30         public static void Main(string[] args)
 31         {
 32 //            Employee e=null;//定义一个类型为Employee的变量e,并且不指向任何地方
 33 //            e=new Employee();//new操作符指示“运行时”为Employee对象分配内存,实例化对象,并返回对象的引用
 34             var employee=new Employee("Zhang","San","MoreMoney");
 35             employee.Save();
 36             // TODO: Implement Functionality Here
 37             Console.ReadKey(true);
 38         }
 39     }
 40     public class Employee
 41     {
 42         /// <summary>
 43         /// 构造函数
 44         /// </summary>
 45         public Employee()
 46         {
 47         }
 48         public Employee(string firstName,string lastName,string salary)
 49         {
 50             FirstName=firstName;
 51             LastName=lastName;
 52             Salary=salary;
 53         }
 54         private string _FirstName;//声明支持字段,如果属性是简写形式的话可以省略支持字段,在编译的时候自动将属性规范化加上支持字段
 55         private int _Age;//支持字段
 56         private double _Sight;
 57         //属性的完整写法,有相应的支持字段
 58         public string FirstName//像这种里面不进行什么的话,最好是用自动属性,虽然是正确的写法,但是这样写不是最优的
 59         {
 60             get{return _FirstName;}
 61             set{_FirstName=value;}
 62         }//未添加set和get的方法的属性简写形式
 63         public string LastName{set;get;}//自动属性的写法,编译器会自动生成相应的支持字段,并写成完整的形式,可读可写属性
 64         public string Salary{get;set;}
 65         //只读属性,get方法里面必须有实现
 66         public  static int Height{ //像这种一般是只读的属性,就是共广大群众使用的,设置为静态的比较好,才是最优的
 67             get
 68             {
 69                 return 20;
 70             }
 71         }
 72         //只写属性,set方法里面必须有实现,举得例子不太符合实际的生活情况但是能够说明问题
 73         public double Sight
 74         {
 75             set
 76             {
 77                 _Sight=value;
 78             }
 79         }
 80         public int Age//属性的正确用法
 81         {
 82             get
 83             {
 84                 return _Age;
 85             }
 86 //            pubilc int Get_Age()
 87 //            {
 88 //                return _Age;
 89 //            }
 90             private set //为set方法加上modifier of private 这个方法就只能在本类内部进行访问
 91             {
 92                 if(value >100||value <0)
 93                 {
 94                   throw new Exception("Age is usefull");
 95                 }
 96                 else
 97                 {
 98                 _Age=value;
 99                 }
100             }
101 //            pirvate void Set_Age(int value)
102 //            {
103 //                _Age=value;
104 //            }
105         }
106         
107         public void Save()
108         {
109             DataStorage.Store(this);
110         }
111         /// <summary>
112         /// 析构函数
113         /// </summary>
114         ~Employee()
115         {
116             //编译到CIL的时候就是一个Finalize()方法,最终调用的是System.Object的Finalize()
117         }
118     }
119     public static class DataStorage
120     {
121         public static void Store(Employee employee)
122         {
123             
124             var stream=new FileStream(employee.FirstName+employee.LastName+".dat",FileMode.Create);
125             var write=new StreamWriter(stream);
126             write.WriteLine(employee.FirstName);
127             write.WriteLine(employee.LastName);
128             write.WriteLine(employee.Salary);
129             write.Close();
130         }
131         public static Employee Load(string firstName,string lastName)
132         {
133             
134             var employee=new Employee();//对于这种变量(variable)最好可以用 ‘var’ 
135             var stream=new FileStream(firstName+lastName+".dat",FileMode.Open);
136             var read=new StreamReader(stream);
137             employee.FirstName=read.ReadLine();
138             employee.LastName=read.ReadLine();
139             employee.Salary=read.ReadLine();
140             stream.Close();
141             return employee;
142         }
143     }
144 }

 

C#字段 属性

标签:

原文地址:http://www.cnblogs.com/vivieryuan/p/4218195.html

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