clr via C# 第一章

一、APL:抽象编程语言
1、APL是一个应用开发平台
2、APL是一种抽象编程语言和思想
3、APL是C++程序开发和APL脚本语言程序开发能够非常好的融合的一种开发工具
4、APL中允许开发者创建自己的C++应用程序框架,而加载APL运行库方式的应用
5、APL脚本可以应用于控制台程序,也可用来写web应用,也可用于组态设计
6、APL接口是一种抽象的并且是可以扩展的接口内涵借口
7、APL发展规划是创建一种OS接口和应用开发之间的一个中间层,是应用考法不再依赖具体OS的API,而是抽象接近人类语言和逻辑的一个中间层接口
二、Perl语法一 some关键字
@ARGV 所有的输入参数被push进该数组
$_ 默认变量
foreach(@ARGV){
print $_
}
将打印出所有的输入参数
sub child_function{
……
$a = $a+ 1
}
$funciton_return = child_function ## $function_return = $a
子程序默认会返回子程序中最后得到的一个变量,当有return会返回return语句state a #持久性私有变量,在子程序中使用这个关键字,每次调用子程序时,会使用上次保留下来的值
二 输入输出
@lines = <\STDIN> #键盘标准输入
open FILEHANDLE, ‘< dino’ 打开文件句柄 ;< 只读 ;>只写会覆盖 ;>>只写不覆盖,写在文件末尾。
open LOG, ’ > :encoding(UTF-8)’, $file_name or die #特定编码
while(<\FILEHANDLE>){
print $_
}
foreach 和while是有区别的
foreach会直接将整个句柄的文件吃进内存,while会一行一行的吃进来
close FINEHANDLE
三 哈希
my %last_name(
‘hannan’ => ‘chenhn’
‘zishan’ => ‘xie’
)
函数 keys values each
my @k = keys %last_name
my @v = valus %hash

key 的顺序不可预测,不过k[i] 会对应v[i]

四 正则
正则匹配修饰符
/m #多行匹配
/s #任意匹配字符 (.)可以匹配/n
/i #大小写无关
/x #加入空白符
/-?[0-9]+.?[0-9]/0
/-? [0-9]+ .> [0-9]
/x 两者的匹配是一样的
锚位
\A 行开头 \z 行末尾
\b 单词边界 /\bdefine\b/ 只匹配define 不匹配tc_define
五 各种小细节
1.多行匹配
1.多行匹配
while(<\FILEHANDLE>){
print $_
}
上述代码会将整个文件以\n换行符吃进来,无法进行多行匹配。
方法a : 改变行分割标志 undef $/ 这样做之后,while会将整个文件知道文件结尾作为行分割标志,吃进来。
方法b: m//m 使用m修饰
三、元数据的一部分用途
1、元数据避免了编译时对原生C/C++头和库文件的需求,因为在现实类型/成员的IL代码文件中,已包含有关引用类型/成员的全部信息。编译器直接从托管模块读取元数据。
2、Microsoft Visual Studio用元数据帮助你写代码。“智能感知”技术会解析元数据,告诉你一个类型提供了哪些方法、属性、事件和字段。对于方法,你还能告诉你需要的参数
3、CLR的代码验证过程使用元数据确保代码只执行“类型安全”的操作
4、元数据允许将对象的字段序列化到内存块,将其发送给另一台机器,然后反序列化,在远程机器上重建对象状态
5、元数据允许垃圾回收器跟踪对象生存期,垃圾回收能判断任何对象的类型,并从数据知道那个对象中哪些字段引用了其他对象
四、-all命令行能够列出机器上所有的CLR版本
五、托管程序集包含元数据和IL
1、IL:是与CPU无关的机器语言(面向对象的机器语言)   
能访问和操作对象类型并提供了指令来创建和初始化对象、调用对象上的虚方法以及操作数组元素
提供了抛出和捕捉异常的指令来实现错误处理
六、两个C#编译器的开关会影响代码优化 /optimize和/debug
1、使用/optimize-,在C#生成为优化IL代码中,将包含许多NOP(no-operation,空操作)指令,还包含了许多跳转到下一行代码的分支指令。如果生成优化的IL代码,C#将删除多余的NOP和分支指令
2、只有指定debug开关编译器才会生成Program Database(PDB)文件。在visual stidio 中新建C#项目时,项目的“调试”(debug)配置指定的是/optimeize-和/debug:full开关,而“发布”(Release)配置指定的是/optimize+和/debug:pdbonly开关。
七、不安全的代码C#编译器默认的是安全的代码 也允许开发人员写不安全的代码,不安全的代码允许直接操作内存地址并操作这些地址处的字节。但是存在风险(可能破坏数据结构,危害安全性,造成新的安全漏洞。)
八、NGen.exe(本机代码生成器)能在以下两种情况下发挥重要作用
1、提高应用程序的启动速度:因为代码已经编译成本机代码,运行时不需要在花时间编译
2、减少应用程序的工作集:如果一个程序集同时加载到多个进程中,对该进程集运行NGen.exe可减少应用程序的工作集
九、开发人员可以利用程序集创建的一部分应用程序
1、web服务
2、基于HTML的Web窗体/MVC应用程序
3、“富”Window GUI应用程序
4、Window服务
5、数据库存储过程
6、组件库九、部分常规的FCL命名空间
十、部分常规的FCL命名空间

在这里插入图片描述
十一、访问权限
1、private 成员只能由同一个类型中的其他成员访问
2、family 成员可由派生类访问 不管是否在同一程序集3
、family and assembiy 成员可由派生类型访问 但派生类型必须在同一程序集中
4、assembly 成员可以在同一程序集中的任意代码中访问 许多语言用internal修饰符来标识
5、fimily or assembly 成员可由任何程序集中的派生类型中访问也可以在任意程序集中访问
6、public 成员可由任何程序集中的任何代码访问
十二、CLR支持三种互操作情形
1、托管代码能调用DLL中非托管函数
2、托管代码可以使用现有的COM组件(服务器)
3、非托管代码可以使用托管类型(服务器)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值