【转】什么是.Net以及.Net的基本语法
什么是.Net?
1. 通常意义所说的.net有5个组成部分,但最主要的部分是.NET Framework, .NET Framework实际上是运行在Windows操作系统的一个应用程序,一个可供二次开 发的类库。.NET Framework包括以下组件:
公共语言运行库(CLR)
基础类库(BCL)
数据库访问组件(ADO.NET和XML)
基于ASP.NET编程框架的网络服务(Web Service)和网络表单(WebForms)
Windows桌面应用界面编程组件(WinForm).
2..NET是微软公司和sum公司的结果
3. 狭义的.net是指.net Framework,。.net Framework核心是CLR(公共语言运行时)
4..Net可以使用多种语言来开发应用系统
.Net的运行机制?
|
.net源代码 |
|
中间语言IL (Intermediate Language) |
|
CLR(Common Language Runtime)公共语言运行库 |
|
第二次编译 |
|
机器码(可执行的最终代码) |
在.net中,编译分为两个阶段:
1.把原代码编译为中间语言(IL)
2.CLR把IL编译为平台专用代码.
.Net常见的术语?
Mircorsoft中间语言(Microsoft Intermediate Languane)MSIL
通用类型系统(Common Type System) CTS
公共语言规范(Common Language Specification ) CLS
公共语言运行库(Common language Runtime) CLR
托管代码(Manged Code)
即时编译(JIT)
.Net能够使用多语言开发的原因(语言互操作的原因)?
1. 所使用的语言必须遵守公共语言规范。
2. 进行第一编译后,在中间语言里,类型都变成了统一的(通用类型系统)。
3. CLR进行二次编译,编译成机器码。
c#基本语法?
变量
1.〉在C#中声明变量用如下语法:
datatype identifier 即:数据类型 变量名
注意:
在C#中变量必须先声明后使用(强类型语言)
C#严格区分大小写
变量必须以字母或者下划线开头,但变量名中可以包含数字
Int num 对
Int _num 对
Int 2num 错
不能把C#关键字作为变量名
2.〉变量的作用域
变量的作用域就是变量在代码当中能起作用的范围。一般情况下有以下规则:
(1) 字段(变量)所属的类在某个作用域内,那么变量也在该作用域内起作用。
(2) 局部变量(指包含在函数中的变量)的作用域存在于该变量所在的块语句或方法结束的封闭的大括号之前。
(3) 在for,while或类似语句中声明的局部变量存在于该循环体内。
3.〉局部变量的作用域冲突
大型程序在不同的部分使用相同的变量名是很常见的,但要注意,同名的变量不能在程序的同一作用域声明两次。
using System; namespace ScopeTest
{ class Test
{ [STAThread]
static void Main(string[] args)
{
// int i=20;
// int i=30;//不可以,同名的局部变量不能在同一作用域内声明两次。
//以下的变量声明方法可以
for(int j=0;j<10;j++)
{
Console.WriteLine(j);
}
//在这个地方,j的作用域已经无效,所以可以重新声明一个j
for(int j=9;j>=0;j--)
{
Console.WriteLine(j);
}
}
}
}
4.〉字段和局部变量的作用域冲突
有的时候,可以区分名称相同、作用域相同的两个标识符。此时编译器允许声明第二个变量因为C#使变量之间有个基本的区分,把声明为类级的变量看作是字段,而把方法中声明的变量看作是局部变量。考虑下边的代码:
using System; namespace ScopeTest1
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Test
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
static int j=20;
[STAThread]
static void Main(string[] args)
{
int j=30;
Console.WriteLine(j);
}
}
}
虽然在同一作用域内声明了两个j,但第一个j定义在类的级别上(static),在该类被删除以前都有效。此时,第二个变量j隐藏了同名的类级变量j,局部变量在起 作用。所以结果为 30。那么,如果要使用类级变量怎么办?可以使用object.fieldname。
原文链接:http://www.cnblogs.com/jiezhang/archive/2012/12/12/2814061.html
【转】什么是.Net以及.Net的基本语法的更多相关文章
- 【.net 深呼吸】细说CodeDom(8):分支与循环
有人会问,为啥 CodeDom 不会生成 switch 语句,为啥没生成 while 语句之类.要注意,CodeDom只关心代码逻辑,而不是语法,语法是给写代码的人用的.如果用.net的“反编译”工具 ...
- Angular2学习笔记(1)
Angular2学习笔记(1) 1. 写在前面 之前基于Electron写过一个Markdown编辑器.就其功能而言,主要功能已经实现,一些小的不影响使用的功能由于时间关系还没有完成:但就代码而言,之 ...
- Elasticsearch之java的基本操作一
摘要 接触ElasticSearch已经有一段了.在这期间,遇到很多问题,但在最后自己的不断探索下解决了这些问题.看到网上或多或少的都有一些介绍ElasticSearch相关知识的文档,但个人觉得 ...
- java基础集合经典训练题
第一题:要求产生10个随机的字符串,每一个字符串互相不重复,每一个字符串中组成的字符(a-zA-Z0-9)也不相同,每个字符串长度为10; 分析:*1.看到这个题目,或许你脑海中会想到很多方法,比如判 ...
- 纯CSS3实现的一些酷炫效果
之前在网上看到一些用纯CSS3实现的酷炫效果,以为实现起来比较困难,于是想看看具体是怎么实现的. 一.笑脸猫动画 实现效果如下: 这个实现起来确实比较麻烦,很多地方需要花时间,有耐心地调整. 1.先看 ...
- SQLSERVER将一个文件组的数据移动到另一个文件组
SQLSERVER将一个文件组的数据移动到另一个文件组 有经验的大侠可以直接忽视这篇文章~ 这个问题有经验的人都知道怎麽做,因为我们公司的数据量不大没有这个需求,也不知道怎麽做实验 今天求助了QQ群里 ...
- Sql Server系列:分区表操作
1. 分区表简介 分区表在逻辑上是一个表,而物理上是多个表.从用户角度来看,分区表和普通表是一样的.使用分区表的主要目的是为改善大型表以及具有多个访问模式的表的可伸缩性和可管理性. 分区表是把数据按设 ...
- SQL Server表分区
什么是表分区 一般情况下,我们建立数据库表时,表数据都存放在一个文件里. 但是如果是分区表的话,表数据就会按照你指定的规则分放到不同的文件里,把一个大的数据文件拆分为多个小文件,还可以把这些小文件放在 ...
- CSS3 background-image背景图片相关介绍
这里将会介绍如何通过background-image设置背景图片,以及背景图片的平铺.拉伸.偏移.设置大小等操作. 1. 背景图片样式分类 CSS中设置元素背景图片及其背景图片样式的属性主要以下几个: ...
- 【.net 深呼吸】细说CodeDom(7):索引器
在开始正题之前,先补充一点前面的内容. 在方法中,如果要引用方法参数,前面的示例中,老周使用的是 CodeVariableReferenceExpression 类,它用于引用变量,也适用于引用方法参 ...
随机推荐
- powerdesigner 不能自动生成注释的解决方法(三步解决)
解决power designer 不能自动生成注释的解决办法只需要3步: 一.快捷键 Ctrl+Shift+X 打开脚本编辑器:(快捷键不能执行的话可以从这个路径执行:Tools --> Exc ...
- XLua----热更新
一.xLua 环境配置 1).Xlua中 Plugin Xlua复制到 需要热更新的工程中---->Assets子目录 2).开启宏HOTFIX_ENABLE File---->bui ...
- IPython绘图和可视化---matplotlib
1. 启动 IPython 2. >> fig = plt.figure() >> ax1 = fig.add_subplot(346) # 将画布分割成3行 ...
- 安卓开发学习笔记(二):如何用Android Stuidio在res资源下创建xml视图文件
笔者在看了相关的教程之后发现教程当中的资源已经过时了.当我们在创建了一个新的空白的工程之后,会发现其文件夹下面的分文件夹目录和官方的教程文件结构完全不同,因此会引起很多误解.笔者使用的是最新版的And ...
- node环境使用multer搭建一个图片接收服务器
为了测试图片上传插件的上传功能是否好用,最近尝试搭建了一个接收图片的服务器,因为图片上传的编码格式是form-data,所以我选择使用express+multer,实现过程中发现有几个需要注意的地方, ...
- 使用SIP Servlet为Java EE添加语音功能
会话发起协议(Session Initiation Protocol,SIP)是一种信号传输协议,用于建立.修改和终止两个端点之间的会话.SIP 可用于建立 两方呼叫.多方呼叫,或者甚至 Intern ...
- Python 爬虫利器 Selenium
前面几节,我们学习了用 requests 构造页面请求来爬取静态网页中的信息以及通过 requests 构造 Ajax 请求直接获取返回的 JSON 信息. 还记得前几节,我们在构造请求时会给请求加上 ...
- [Swift]LeetCode15. 三数之和 | 3Sum
Given an array nums of n integers, are there elements a, b, c in nums such that a + b + c = 0? Find ...
- [Swift]LeetCode674. 最长连续递增序列 | Longest Continuous Increasing Subsequence
Given an unsorted array of integers, find the length of longest continuous increasing subsequence (s ...
- [Swift]LeetCode845. 数组中的最长山脉 | Longest Mountain in Array
Let's call any (contiguous) subarray B (of A) a mountain if the following properties hold: B.length ...