首页 > 代码库 > 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#字段 属性
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。