吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 4581|回复: 16

[C#] C#中级开发原创教程第三课-封装

[复制链接]
王尼玛 发表于 2014-11-22 03:38 | 显示全部楼层 |阅读模式

本帖最后由 王尼玛 于 2014-11-22 16:21 编辑
大家好,我是王尼玛。今天起我给大家讲解C#中级开发教程,本次是第三课。大家在课后有什么疑问可以跟帖留言,我会尽我所能来解答。毕竟众口难调,大家有什么建议也可以跟帖告诉我。
此教程为本人原创,转载请注明"吾爱汇编论坛王尼玛原创"
好了,废话不多说,开始今天的学习.

有朋友说不太明白我写的教程,其实编程这东西很简单,一个字,练!你光看我写的多半是一头雾水,因为你没实际跟着我讲的代码去操作,你要跟着我的代码敲,多敲代码,多练习我给的例子,再配合我例子后面的讲解,自然就明白我讲的是什么了.还不明白?跟帖问吧

1.C#的属性

在C#中,字段通常是私有的.如果要访问类中的字段,需要通过get和set访问器实现
这种结合了字段和方法的实现方式我们称为属性(property)


语法:
  1. private string _name;
  2. public string Name
  3. {
  4.    get{ return _name; }
  5.    set{_name = value }
  6. }
复制代码

get访问器用来返回相应的私有字段的值
get访问器与方法相似,必须用return语句返回字段的值
执行get访问器相当于读取类中私有字段的值


set访问器用来设定相应的私有字段的值
set访问器类似于返回类型为void的方法
它使用一个隐含的输入参数value
当对属性赋值时,将会调用set访问器,并将新的参数值赋予相应的字段


下面我们来实现对Student类_age的赋值和读取

  1. class Student
  2.     {
  3.         private string _name = "王尼玛";//姓名
  4.         private int _age;//年龄
  5.         public string _cardId;//身份证号

  6.         public int Age
  7.         {
  8.             get
  9.             {
  10.                 return _age;
  11.             }
  12.             set
  13.             {
  14.                 if(value<0||value>100)
  15.                 {
  16.                     _age = 19;
  17.                 }
  18.                 else
  19.                 {
  20.                     _age = value;
  21.                 }
  22.             }
  23.         }
  24.     }
复制代码
  1. class Program
  2.     {
  3.         static void Main(string[] args)
  4.         {
  5.             Student stu = new Student();
  6.             stu.Age = -20;
  7.             Console.WriteLine("年龄是{0}", stu.Age);
  8.             stu.Age = 40;
  9.             Console.WriteLine("年龄是{0}", stu.Age);
  10.         }
  11.     }
复制代码
运行结果: 5.png


2.属性的数据类型
定义类中的一个属性时,属性的数据类型必须与它所访问的字段类型一致
例如字段_age是整形,那么,它的属性Age也必须是整形
如果姓名字段_name为string类型,那么它对应的属性也一定是string类型

  1. 属性的类型可以是一个类或者一个数组吗?
  2. 可以
复制代码


3.属性的访问类型

属性除了可以约束数据访问外,还可以设置读,写来限定他的访问类型

属性的访问类型分为以下三种:

  • 只读属性,只包含get访问器
  • 只写属性,只包含set访问器
  • 读写属性,包含get和set访问器

由此可以看出,get和set访问器的灵活运用么可以保障类中字段的安全

4.在编码中如何快速地创建属性



属性在C#开发中的使用是非常普遍的,除了手动输入代码外
VS还给提供了一个快捷的方法,重构-封装字段
在一个类中,定义一个字段,通常设定为私有
选中这个字段,右击鼠标,在弹出的快捷菜单中
选择重构-封装字段命令

1.png
你可以修改属性的名称
2.png
预览效果
3.png
最终效果
4.png

小技巧:
封装字段的快捷键是Ctrl+R+E


这节课就到这,谢谢大家



评分

参与人数 13HB +55 THX +12 收起 理由
消逝的过去 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
agan8888 + 1
EMT + 1 + 1
ding520 + 1 [吾爱汇编论坛52HB.COM]-软件反汇编逆向分析,软件安全必不可少!
若只如初见 + 3 + 1 支持!我很赞同!
Shark恒 + 10 + 1 这将是一大福利呀~
雾里看花 + 3 + 1 积极评分从我做起,感谢!
逍遥枷锁 + 2 + 1 支持原创,感谢楼主!
zx2cwf + 10 + 1 支持!我很赞同!
Scar-疤痕 + 3 + 1 论坛有你更精彩!感谢楼主!
判官 + 5 + 1 感谢!新技能get√
起凡第一华佗 + 17 + 1 论坛有你更精彩!感谢楼主!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 王尼玛 发表于 2014-11-22 03:44 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
Scar-疤痕 发表于 2014-11-22 07:48 | 显示全部楼层

楼主,辛苦了
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
520Kelly 发表于 2014-11-22 09:05 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
keke120 发表于 2014-11-22 09:49 | 显示全部楼层

感谢 您的教程   之前学过一段时间C#   只是了解了一些 皮毛  现在有你的教程  可以系统的学习一下 ,并且没有书上讲的那么繁琐,再次感谢,继续推出你的教程,等待你的下一季

点评

王尼玛”点评说:
感谢支持  详情 回复 发表于 2014-11-22 16:26
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
ferline8 发表于 2014-11-22 11:01 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
扯淡 发表于 2014-11-22 12:36 | 显示全部楼层

如果英文超级烂。能不能学- -

点评

王尼玛”点评说:
当然可以了,  详情 回复 发表于 2014-11-22 16:27
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
小人 发表于 2014-11-22 15:04 | 显示全部楼层

c#崛起    谢谢大大的教程
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 王尼玛 发表于 2014-11-22 16:26 | 显示全部楼层

keke120 发表于 2014-11-22 09:49
感谢 您的教程   之前学过一段时间C#   只是了解了一些 皮毛  现在有你的教程  可以系统的学习一下 ,并且 ...

感谢支持
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
 楼主| 王尼玛 发表于 2014-11-22 16:27 | 显示全部楼层

扯淡 发表于 2014-11-22 12:36
如果英文超级烂。能不能学- -

当然可以了,
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表