首页 > 代码库 > C#字段 属性

C#字段 属性

  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 DataStorage120     {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#字段 属性