当前位置: 首页 > 编程日记 > 正文

(读书笔记).NET大局观-.NET语言(1)

通用语言运行时

通用语言运行时被明确设计为支持多种语言,一般而言,建立于CLR之上的语言可以获得共同的良好处理。通过一个宏大的核心语义集,CLR还界定了一个以它为基础的典型编程语言的大体部分。例如对于任何一种基于CLR的语言,单单领会“CLR所定义的标准类型”如何被映射到特定语言宏,就占了很大部分的学习量,当然你还必须学习特定语言的语法和控制结构,然而一旦掌握了CLR所提供的东西,面对任何一种建立于其上的语言,你已经占领的先机。

题外话:JAVA在.NET框架中的处境

从一开始,微软就提供了一个.NET框架版的JAVA编程语言,J#

在两种情况下J#是恰当的选择:

第一种情况:需要将现有的JAVA代码转移到.NET框架

第二种情况:经验丰富的JAVA开发人员迁移到.NET框架中,人们常常有一种对自己所熟悉语法的强烈的附属感觉,因此在一个熟悉的语言中工作会使得过渡更加容易。

所有的C#程序由一定数量的类型组成,其最外源必定是类,接口,结构,枚举或者委托。还有命名空间,所有方法和字段必须隶属于上述的类型之一,这意味着C#不允许全局变量和全局函数。

Public double  good(double  s)

{

ReturnSystem.Math.Sqrt(s);

}

good函数带了一个参数和一个返回值,这些参数都已传值得方式传入,这是C#的缺省行为,意味着函数返回时,函数内部对参数值所做的更改,不会被调用端看到,如果参数前面标以关键字ref,这就会造成引用方式传递参数,如此一来函数内部对参数所做的任何改变,就都会反映给调用端。

C#不能像C/C++那样吧参数也设为void,使得,void的唯一用途就是致命某个方法不传回任何值。

C#提供的类型

sbyte

有符号8位整数

-128-127

SByte

byte

无符号8位整数

0-255

Byte

short

有符号16位整数

-32768-32767

Int16

ushort

无符号16位整数

0-65535

UInt16

Int

有符号32位整数

-2147489648-2147483647

Int32

uint

无符号32位整数

0-42994967295

UInt32

long

有符号64位整数

-263-263

Int64

ulong

无符号64位整数

0-264

UInt64

float

32位单精度实数

1.5*10-45-3.4*1038

double

64位双精度实数

5.0*10-324-1.7*10308

demcimal

128位十进制实数

1.0*10-28-7.9*1028

对于属性的一种“极端”的观点,永远不要使用公开字段,属性总是一个更好的选择。

结构

CTS没有明确定义一个结构类型,而C#结构是基于类的,并且像类一样,结构可以实现接口,包含方法,字段,属性,不过与类不同,结构是值类型而非引用类型,这意味着他们被分配于堆栈之上,此外值类型不能参与继承,因此C#结构不能参与继承自其它类型,

委托和事件

传递一个指向方法的引用是件合情合理而且稀松平常的事情,假设你需要通知代码,请它于特定事件发生时代用你所提供的一个方法,那么你就需要某种办法将运行期间将回调函数传入。C++中你可以通过“传入方法的地址”办到这一点,然而在.NET框架类型安全的世界里,并不允许地址传递,但这并不能说NET之中就没有这个需求了

这里就用到了委托和事件

CTS定义了引用类型委托,目的正是为此,一个委托就是一个对象,它包含一个引用,后者指向一个“具有特定签名”的方法,一旦你创建了它并加以初始化。就可以将其作为参数传入其他方法并调用之。

详细参见博文:http://blog.csdn.net/yixiantian7/article/details/10586075

NetFramework的编码规范:

  委托类型的名称都应该以EventHandler结束。

委托的原型定义:有一个void返回值,并接受两个输入参数:一个Object 类型,一个 EventArgs类型(或继承自EventArgs)。

 public delegate void BoiledEventHandler(Object sender,BoiledEventArgse );

  事件的命名为 委托去掉 EventHandler之后剩余的部分。

public event BoiledEventHandler Boiled; //声明事件

  继承自EventArgs的类型应该以EventArgs结尾。

  // 定义BoiledEventArgs类,传递给Observer所感兴趣的信息

publicclass BoiledEventArgs : EventArgs {

publicreadonly int temperature;

publicBoiledEventArgs(int temperature) {

this.temperature = temperature;

}

  这里还有一个约定俗称的规定,就是订阅事件的方法的命名,通常为“On事件名”,比如这里的OnBoiled。

 protected virtual voidOnBoiled(BoiledEventArgs e) {

if(Boiled != null)

{ // 如果有对象注册

Boiled(this,e);  // 调用所有注册对象的方法....在这个地方引发了事件

}

事件所使用的委托称为事件处理器(eventhandler)

它其实就是一个普通的委托,不过,NET框架为这些事件处理定义了两个约定

1 事件处理器不返回任何值,也就是它的返回值是void

2 事件处理器总是接受两个参数,第一个参数标识事件的发起者,按照惯例命名为sender

其类型为system.object(在C#中 就是object类型,他是system.object的一个别名)这使得事件接收者反过来于触发事件对象进行通讯更加方便,第二个参数包含事件发起者调用事件处理器传入的全部数据,习惯上将其命名为e,其类型是System.EventArgs或是继承自System.EventArgs的类型

下面就是是个事件处理器的例子

Public delegatevoid MyEventHandler(object sender, MyEventArgs e)

其他一些C#特性:

命名空间

异常处理

参见博文:http://blog.csdn.net/yixiantian7/article/details/10390117

关于属性attributes(用实例来讲这个更容易理解)

参见博文:http://www.cnblogs.com/luodong/archive/2009/07/14/1523012.html

(一) 在前台用JS写的脚本方法,除了可以直接用在前台控件的属性中,还可以在后台运用。即在后台页面加载时,调用JS方法。语法格式有两种,如下:

1.第一种写法:控件ID名.Attributes.Add(“事件名称”,“JS方法”);

如:一个按钮控件Button1.Attributes.Add(“onclick”,“returnconfirm('确认?')”);

2.另一写法:控件ID名.Attributes["事件名称"]=“JS方法";

如:前台写了一个JS方法: function ISCheck(){。。。。。。};

Button1.Attributes[“onclick”]="ISCheck()";

PS:另外还可以控制某一个文本框的属性,比如文本框的大小,宽度等。

如:TextBox1.Attributes.Add(“width”,“80px”);

(二)前面是第一部分,是学习的别人的.下面提出一点自己的:

在后台用this.form名字.attributes["名称"]=...储存名字.

在前台调用: var f=document.form名字;    变量=f.attributes["名称"].value;

编写不安全代码

在c#使用指针就意味着不依赖垃圾回收机制来帮你管理内存,在这些情况下,C#允许你使用指针,这就是我们常说的”不安全代码”

在不安全代码中使用指针,这样就带来了指针具有的好处和缺点,为了使这种不全的行为尽可能安全一点,C#要求所有这种代码必须明白标以关键字unsafe,在一个不安全的放阿飞内我们可使用fiexd语句锁定一个或者多个位于托管堆上的引用类型(有时候这种做法称为“钉住”(pinning))

预处理指令

和C/C++不同的是,C#没有预处理器,编译器对预处理器的大多数功能都提供了内建支持

例如:C#预处理器指令包括#define,这是一个C/C++开发人员习以为常的术语,然而这个术语不能被定义“以一个词代表一个字符串”,#define只能用于定义记号,记号可以和#If指令一起使用,提供条件编译的功能

题外话:

C#是一个比java更好的语言吗?

这个问题没有客观答案,即使真的如此也无足轻重,仅仅因为编程语言而选择一个开发平台,就像仅仅喜欢车上的收音机而买下那辆车一样,你当然可以这么做,但如果你基于通盘考虑而做下决定,你会更开心。

转载于:https://www.cnblogs.com/pangblog/p/3297122.html

相关文章:

【分布式共识三】拜占庭将军问题----书面协议

2019独角兽企业重金招聘Python工程师标准>>> 区块链兄弟社区,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者:吴寿鹤 来源:区块链兄弟 原文链接:http://www.blockchainbrother.com/article/8 著…

2021.09 电子学会 - 软件编程(图形化)试题讲解

软件编程(图形化)试题讲解 一级 考核目标 考查对软件编程界面的认识和基本操作;能够导入角色、背景和声音,通过对角色和背景进行简单操作,编写一个具有简单顺序结构的作品;同时考查简单的逻辑推理能力。 …

css代码应该放html哪里,css代码放到哪里?

CSS以HTML为基础,提供了丰富的功能,如字体、颜色、背景的控制及整体排版等。css代码需要放到哪里? 是不是一定写到html文件里面呢? 下面给大家介绍一下。css代码的定义通常有三种方式,内部样式表,内联样式表…

vmware克隆centos修改linux mac地址

故障背景: 在vmware workstation中了完全克隆了一个已经存在的centos的虚拟机,启动之后发现网卡没有启动。于是重启一下network服务,发现提示错误信息“Device eth0 does not seem to be present, delaying initialization.” www.2cto.com …

运用jieba库分词

代码: 统计出团队中文简介中词频 import jieba txtopen("C:\\Users\\Administrator\\Desktop\\介绍.txt","r",encodingutf-8).read() wordsjieba.lcut(txt) counts{} for word in words: if len(word)1: continue else: counts[word]counts.get…

【NCEPU】韩宇:上海新能源汽车比赛方案讲解

韩宇是华北电力大学国教大三的学生,参加了多期Datawhale的组队学习,也在天池、Kaggle等比赛中取得了不错的成绩。 他在线下组队学习时,曾为大家分享过如何准备天池深度学习的比赛?。这篇图文是他为大家分享自己刚刚参加的2021上海…

宁波大红鹰学院计算机科学与技术,2019宁波大红鹰学院专业排名

宁波大红鹰学院是一所全日制民办普通本科高校,由宁波大红鹰教育集团出资举办。学校创办于2001年4月,2008年4月,经教育部批准升格为本科院校,为了让大家更好的了解这所大学的专业排名,下面是学习啦小编给大家带来的宁波…

Json.Net学习笔记

Json.Net学习笔记 摘自: http://www.verydemo.com/demo_c360_i45119.html分类:编程语言/ASP.NET/文章导读:string googleSearchText "{ ""responseData"": { ""results"": [ { ""GsearchResul…

中国电子学会青少年编程能力等级测试图形化四级编程题:正话反说

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

4.10日一直报错application未注入的问题解决

1.db.propertities 里面连接的是正式库,改为5522测试库 2.将pom.xml右键run as 后点击 instal转载于:https://www.cnblogs.com/CrisZjie180228/p/8793502.html

北邮计算机科学技术是学硕吗,【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总...

原标题:【计算机考研】2020北京邮电大学计算机科学与技术考研初试科目、参考书目、复试详情汇总一、考试科目计院的学硕是计算机科学与技术,专硕为计算机技术。计算机科学与技术:①101思想政治理论②201英语一③301数学一④803计算机学科基础…

node学习笔记

1.node.js的回调函数的两个参数:第一个参数代表错误信息,第二个参数代表结果。 if (err) {// 出错了 } else {// 正常 } 复制代码注:当正常读取时,err参数为null,data参数为读取到的String。当读取发生错误时&#xff…

PHP5.3.8连接Sql Server SQLSRV30

PHP5.3连接SQL Server就不能用php_mssql.dll了。 网上下载了好多都不行,因为它的版本是5.2的,不能再PHP5.3中使用。 后来听说微软专门为PHP出了自己的dll。 叫做Microsoft SQL Server Driver for PHP PHP5.3中用3.0的版本就可以了。 SQLSRV30.EXE 就是这…

Task03:青少年软件编程(Scratch)等级考试模拟卷(一级)

电子学会 软件编程(图形化)一级训练营 试题来源 青少年软件编程(Scratch)等级考试试卷(一级)【2019.09】青少年软件编程(Scratch)等级考试试卷(一级)【2019…

青岛中专学计算机哪个学校比较好,青岛最好的中专学校是哪个

青岛最好的中专学校是山东省轻工工程学校,小编为大家带来了青岛优秀中专学校名单,一起来看看吧。青岛有哪些好的中专山东省轻工工程学校青岛西海岸新区中德应用技术学校青岛华夏职业学校青岛旅游学校寿光市职业教育中心学校青岛经济职业学校枣庄市龙都中…

中国电子学会青少年编程能力等级测试图形化四级编程题:排序

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

Extjs 基础篇—— Function基础

这里主要是JS的基础知识,也是深入理解Ext的基础。1.参数可变长,注意跟Java还是有一点区别的。例: view source print?1.function getUser(name,age){2.alert("name: "name " age: "age);3.}调用方法:getUse…

Datagridview中数字格式列 不显示小数点前面的0

用代码设置DataGridView中某列为数字格式,但当小数为0.*的时候,前面的0却不显示。只显示.*。 看网上有说: 调整本地设置,控制面板-区域和语言选项,在弹出框的区域选项卡中,选择自定义,在弹出框的…

使用计算机辐射最大,计算机辐射的主要来源及其对人体的危害

计算机已进入现代社会的各行各业和千家万户,它给人们的工作、学习、生活带来了极大的方便。但“计算机病”也与日俱增,严重的影响了人们的身心健康。“计算机病”的症状表现为神经衰弱综合癌、肩颈腕综合症、以及腰背酸疼、抗病能力降低、易感冒等&#…

Android开发权威指南(第2版)新书发布

《Android 开发权威指南(第二版)》是畅销书《Android开发权威指南》的升级版,内容更新超过80%,是一本全面介绍Android应用开发的专著,拥有45 章精彩内容供读者学习。  《Android开发权威指南(第二版)》全面介绍了Android应用开发的各种技术…

北京智能计算产业研究院落户顺义,中科睿芯联手计算所、顺义区打造“产业园2.0”...

作为具有重大发展潜力的高技术产业方向,智能计算在我国方兴未艾。 12月6日,由中科院计算所孵化的智能计算领域创业公司“中科睿芯”牵头发起、联袂中科院计算所和中关村顺义园管委会共同打造的“北京智能计算产业研究院”(下简称“研究院”&…

Scratch青少年编程能力等级测试模拟题(四级)

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

react 用html插件,React配置过程中用到的插件汇总

●react插件●react-dom插件●react-router插件●react-redux插件●babel插件●webpack插件●loader插件●jquery插件●moment插件●bootstrap插件●react插件→react(局部安装:cnpm install react --save-dev)→react-dom(局部安装:cnpm install react …

iOS学习之路十三(动态调整UITableViewCell的高度)

大概你第一眼看来,动态调整高度是一件不容易的事情,而且打算解决它的第一个想法往往是不正确的。在这篇文章中我将展示如何使图表单元格的高度能根据里面文本内容来动态改变,同时又不必子类化UITableViewCell。你当然可以通过子类化它来实现&…

近期Freecodecamp问题总结

最近没什么事,刷了freecodecamp的算法题,发现了自己基础的薄弱 1 where are thou 写一个 function,它遍历一个对象数组(第一个参数)并返回一个包含相匹配的属性-值对(第二个参数)的所有对象的数…

中国电子学会青少年编程能力等级测试图形化四级编程题:随机选T恤

「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复【Scratch】或【Python】,即可进入。如果加入了之前的社群不需要重复加入。 我们将有关编程题目的教学视频已经发布到抖音号21252972100,小马老…

计算机网站编辑需要学什么,网站编辑工作的心得体会

网站编辑工作的心得体会从事网络编辑之前,我对网络编辑这个名词可谓前所未闻,一无所知。从起步时我也认为网络编辑的工作应该是很轻松的,每天就是相同的工作:复制加粘贴,感觉是一个“搬运工”,而后在这十个…

Earth to developers: Grow up!

这是篇老外写的文章,主题是针对网络上的一些宗教式的争论,作者叙述了他自己的一些观点。主要从以下6点做了陈述。为了表达的精确性,就直接用英文。 1. Reject dogmatic thinking about tools, practices, and processes. 2. value flexibilit…

php的匿名函数和闭包函数

php的匿名函数和闭包函数 tags: 匿名函数 闭包函数 php闭包函数 php匿名函数 function use 引言:匿名函数和闭包函数都不是特别高深的知识,但是很多刚入门的朋友却总是很困惑,因为大家习惯上写了函数就是用来调用的,匿…

青少年编程竞赛交流群周报(第042周)

2021年12月19日(周日)晚20:00我们在青少年编程竞赛交流群开展了第四十二期直播活动。 一、直播内容 我们直播活动的主要内容如下: 讲解了上次测试中小朋友们做错的题目 Scratch青少年编程能力等级测试模拟题(四级)。…