简述我理解的C#
第一章:开发入门
一、基础知识
1、计算机语言发展进程:计算机语言大致经过了机器语言、汇编语言、高级语言三个阶段的发展历程。
汇编语言:使用助记符来替代机器指令机器语言这种反人类的设计,阻碍了软件的发展。因此,后来出现一种语言,它使用一些人类世界中的单词,来代表机器指令,这样的单词,叫做助记符,而这种语言,叫做汇编语言。
高级语言:高级语言更加符合人类的思维习惯汇编语言虽然使用了很多助记符,但它仍然要关注计算机硬件的执行原理,比如:寄存器、控制器、逻辑部件、缓冲区等等等等。因此,汇编语言仍然难以被人类学习和理解。我们开发的软件,功能上已经够复杂的了,还要在编程时考虑计算机底层的硬件原理……高级语言解决了这一问题,使用高级语言,你不用再去考虑计算机硬件是怎么执行的,你可以将目光更加专注于功能的开发。实际上,高级语言也会考虑一部分计算机的底层原理,只不过这一部分非常之少,相对于汇编来说,已经是极大的改善了。高级语言有很多,比如:C#、java、C、js、Python等等等等。
2、 首先我们来说一下关于计算机编程的一些术语:(1)计算机语言;(2)源代码;(2)编译;(4)IDE;(5)编译器;(6)机器 语言;(7)主函数;
计算机语言:人类与计算机沟通的工具,常见的计算机语言:C.PHP.Ruby.Java.C#.Basic.js.C++. ...
源代码:用某种计算机语言编写的内容(这里是C#源代码)
编译器:负责编译的工具;
编译:将源代码转换成机器代码;
IDE::集成开发环境,用于开发软件的工具;
机器语言:机器语言是能够直接被计算机理解并执行的语言
主函数:程序启动时运行的函数;从上到下一次运行函数题中每一句代码,主函数运行结束,程序结束。
3、源代码(code)--编译(compile)--运行(run)
C#语言的编译器CSC,为了解决跨机器跨平台的问题,不会将源代码直接编译为机器代码,而是将其编译成中间代码,称为IL。
中间代码,既不是源代码,也不是机器代码,你可以把它想象成一种介于源代码与机器代码之间的代码。在阅读难易程度上,它的易读性比源代码高,比机器代码低。
世界上,没有任何一个操作系统,也没有任何一款CPU,能够识别这种中间代码。全世界,只有一款软件可以识别,这款软件就是.NET。
.NET可以识别并执行中间代码,它会根据当前的运行环境(CPU和操作系统),将中间代码转换为最合适的平台代码(可以理解为机器代码),交给CPU和操作系统执行。
也就是说,用C#开发的程序,编译好后,可以放到任何一台计算机、任何一种操作系统上执行,前提条件是,它要安装一个软件.NET。
win7、win8、win10操作系统安装后,会自动安装.NET。windows xp或之前版本的操作系统则不会。
如果你是windows xp或之前版本的操作系统,想要运行.NET程序,需要单独下载.NET安装。
这样一来,使用C#语言开发程序,只需要编译一次,就可以将编译结果放到任何一台计算机上正确执行,真正做到了跨机器、跨平台。
当然别忘了,前提条件是,该计算机要安装.NET,因为这一切,都是.NET的功劳。
.NET运行时,全称Common Language Runtime,缩写为CLR,中文译为:公共语言运行时。
前面提到的,.NET可以根据当前的运行环境,将中间代码转换为特定最终代码的功能,就是CLR提供的。
.NET跟语言无关!不管你是用java还是php,不管是用C还是VB,只要你能把源代码转换成中间代码,.NET的CLR就可以执行,它不用管你的源代码到底是什么语言。
正是因为这一特性,.NET可以支持各种各样的计算机语言,它把这些能够编译成中间代码的语言叫做公共语言,而CLR正是用于执行这些语言编译结果的,所以,它叫做公共语言运行时。
也正是因为这一特性,.NET获得了很多语言的支持,你使用以下这些语言编写代码,都可以顺利的交给.NET运行
公共类库:可以把公共类库想象成一个超大型的知识库,知识库中存在大量的、已经完成的代码,这些已经写好的代码可以极大的方便你的开发。只要是.NET支持的语言,都可以从这个知识库中获取它各个层面的功能。不同的语言,只是表达方式有差异罢了。
实际上,在控制台中输出内容,并非一件简单的事情,你之所以可以用这段简单的代码就可以达到输出内容的目的,正是因为这句代码使用了公共类库中的功能。公共类库中已经给你写好了输出代码,你只需要使用C#的语法使用即可。
用编译器将源代码编译成机器代码,计算机才能执行;
首先我们来学习如何找编译器:(1)先找到csc.exe文件夹C→Windows→microsoft.NET→Frame work→V4.0.30→csc.exe(C#编译器);(2)命令行:Windows+R→cmd→cd (编译器路径)→路径csc /out:\存放路径 源代码位置 ,
如:编译器路径csc /out:\d:\MyFirst.exe d:\MyFirstProgram.txt。
4、用VS2013新建工程
(1)新建项目→模板(Visual C#)→控制台应用程序
(2)编写代码(如果看不到页面)→点击右边解决方案→Program.cs
(3)编译运行→解决方案→MyFirstVS→生成(运行: F5/启动)
第二章:变量与数据类型
一、变量(必须先声明再赋值)
1、定义:一块存储数据的内容空间,并且该内存区域的数据内容可以变化;
2、变量的声明:指定一块内存空间,用于存放数据;
声明的语法:数据类型 变量名;(变量名就是给变量取的名称,C#对大小写比较敏感)
3、变量的赋值:将数据存放到变量的内存空间;
赋值:变量名=数据;(赋值的时候,变量名和声明时候的变量名要匹配)
变量和声明可以合并书写:数据类型 变量名 = 数据;如:int a = 0;
4、变量命名的要求
(1)硬性要求:
1.变量名只能由数字、字母、下划线组成
2.变量名不得以数字开头
3.变量名不能与关键字相同
4.同一个函数中变量名不得相同
(2)软性要求:变量名首字母小写除第一个单词外,其他单词首字母大写*使用驼峰命名法,做到望文知义。
5、声明时须对变量初始化(初始化:第一次给变量赋值)
int num1=,num2=;
string str1 =“Hello,World”;
6、变量三要素:数据类型 变量名 变量值
二、数据类型
1、数据运算
(1)数字运算
数字运算规则:支持运算:加(+)、减(-)、乘(*)、除(/)、求余(%);返回类型:与运算类型相同;int类型与int返回int; double类型与double返回double;double与int返回double。
(2)字符串运算(返回类型:string)
数据类型 变量名;
等效→ 数据类型 变量名=变量值
变量名=变量值;
2、类型转换
(1)将任意类型转换为string
转换代码:带转换的数据.ToString();返回类型:string
int a = ;
string b = a.ToString();
(2)int类型与double类型的互转
显示转换:
double a = 3.14;
int d = (int)a;
注:显示转换有可能造成数据丢失。
(3)string转换为数字
①string→int int.Parse(待转换的字符串);返回类型int;
②string→double double.Parse(待转换的字符串);返回类型double;
接下来来一个实例:
计算圆形的面积与周长
static void Main(string [] args)
{
Console.Write("请输入圆形的半径(单位米)");
string input = Console.ReadLine();
double r = double.Parse(input);
double pi = 3.14;
double area = pi*r*r;
double perimeter = *pi*r;
string result = "圆形的面积是:"+area+“平方米”;
Console.WriteLine(result);
result = "圆形的周长是:"+perimeter+“米”:
Console.WriteLine(result);
Console.Write("按回车键结束程序");
Console.ReadLine(); }
3、软件中的错误与调试
第三章 运算符和表达式
一、运算符
1、认识运算符
概念:运算符又叫操作符,是一个用于运算的符号,它作用于一个或多个操作数。
运算符的分类:
(1)按运算符的数量;一元(目)运算符 ← 作用于一个操作数;二元(目)运算符 ←作用于两个操作数;
三元(目)预算符 ←作用于三个操作数
(2)按运算符的功能;算术运算符 ← 用于数学运算;逻辑运算符 ← 用于判断真假;
位运算符 ← 用于二进制运算;其他。
2、常见运算符:
(1)小括号
功能作用:①类型转换②改变运算顺序③函数调用
(2)算术运算符
①加加运算符
变量名++:1.先计算返回结果,与变量相同;2,将变量的值自增1
++变量名:1.计算返回结果,为变量值加1;2.将变量的值自增1
int x = ;
x++;
++x;
x = x++;
x = ++x;
计算结果:x =
②减减运算符(同理++运算符)
int x = ;
x--;
--x;
x = x--;
x = ++x;
计算结果:x = --
③+ - * / % ++ --
④运算顺序:++ -- → * / % → + -
(3)赋值运算符
变量=运算代码(將运算代码赋值给变量);赋值运算符:= += -= *= /= %=;
(4)逻辑运算符(返回类型:bool (布尔)→ true 或false)
== != > >= < <= && || !
等于 不等于 大于 大于等于 小于 小于等于 并且 或者 非
&&:对两个bool类型进行运算,运算的结果:真真为真,其他为假:
||:对两个bool类型进行运算,运算的结果:假假为假,其他为真;
!:一元运算符,对一个bool类型的数据求反。数据为真,其结果为假;数据为假,其结果为真。
(5)三目运算符:又叫做三元运算符,他需要三个操作数参与运算(书写方式:操作数1 ? 操作数2 : 操作数3)
返回结果:如果操作数1判定结果为真,则将操作数2作为返回结果;
如果操作数1判定结果为假,则将操作数3作为返回结果。
int a = ;
int b = a%;
bool c = b == ;
string d = c ? "偶数" :"奇数";
Console.WriteLine(d);
输出结果为:奇数
(6)位运算符(只做了解):用于对数字进行二进制运算
二、表达式
一条有意义的语句,并且该语句至少包含一个操作数和一个操作符。每一个表达式,都有一个返回类型。每个表达式都可以与其 他表达式进行运算,只要类型符合要求。
第四章 流程控制
第五章 数组
第六章 函数
未 完 待 续......
简述我理解的C#的更多相关文章
- 【系统之音】Android进程的创建及启动简述
Android系统中的进程(这里不包括init等底层的进程)都是通过Zygote fork而来的,那这些进程的启动流程都是怎样的呢? 这里将Android进程分为两个部分: (1)系统框架进程Syst ...
- 分享18道Java基础面试笔试题(面试实拍)
上图来自Java技术栈微信群里的群友分享,看起来比较基础,但不一定人人都答得上来. 图片比较模糊,小编把题目进行了文字化. 1.你最常上的两个技术站和最常使用的两个app分別进什么?主要解决你什么需求 ...
- Jmeter系列(30)- 性能指标(3) | 性能指标峰值
性能指标峰值 简述 彻底理解了性能指标(1)(2)的内容,这一篇随笔其实就不用看了,而且大家也能猜到这一篇内容是啥:二八原则 性能指标不要硬性的往那些性能指标上去靠,要根据业务来,熟悉业务,明白了解你 ...
- ICCV2021 | Vision Transformer中相对位置编码的反思与改进
前言 在计算机视觉中,相对位置编码的有效性还没有得到很好的研究,甚至仍然存在争议,本文分析了相对位置编码中的几个关键因素,提出了一种新的针对2D图像的相对位置编码方法,称为图像RPE(IRPE). ...
- 【自编教材】16万8千字的HTML+CSS基础 适合从0到1-可收藏
[图片链接有点小问题,这几天更新,敬请期待!] 目 录 第一章HTML基础 1.1 HTML简介和发展史 1.1.1 什么是HTML 1.1.2 HTML的发展历程 1.1.3 web标准 1.2 开 ...
- 计算机视觉--CV技术指南文章汇总
前言 本文汇总了过去本公众号原创的.国外博客翻译的.从其它公众号转载的.从知乎转载的等一些比较重要的文章,并按照论文分享.技术总结三个方面进行了一个简单分类.点击每篇文章标题可阅读详细内容 欢迎关注 ...
- 【Java面试】简述一下你对线程池的理解?
到底是什么面试题, 让一个工作了4年的精神小伙,只是去参加了一场技术面试, 就被搞得精神萎靡.郁郁寡欢! 这一切的背后到底是道德的沦丧,还是人性的扭曲. 让我们一起揭秘一下这道面试题. 关于, &qu ...
- 深入理解javascript原型和闭包(8)——简述【执行上下文】上
什么是“执行上下文”(也叫做“执行上下文环境”)?暂且不下定义,先看一段代码: 第一句报错,a未定义,很正常.第二句.第三句输出都是undefined,说明浏览器在执行console.log(a)时, ...
- 深入理解javascript原型和闭包(9)——简述【执行上下文】下
继续上一篇文章(http://www.cnblogs.com/wangfupeng1988/p/3986420.html)的内容. 上一篇我们讲到在全局环境下的代码段中,执行上下文环境中有如何数据: ...
随机推荐
- 优雅的使用windows
1. 快捷键 win+数字键:打开任务栏对应位置的程序 eg:快捷打开程序,重复该组合键有两个效果,如果只打开了一个窗口,再次按下组合键即可最小化,如果打开了多个窗口,则可以在同一程序的多个窗口中切换 ...
- go 笔记
Go 语言的变量声明格式为: var 变量名 变量类型 返回类型. 匿名变量不占用命名空间,不会分配内存.匿名变量与匿名变量之间也不会因为多次声明而无法使用. func GetData() (int, ...
- bootstrap table 前后端分页(超级简单)
前端分页:数据库查询所有的数据,在前端进行分页 后端分页:每次只查询当前页面加载所需要的那几条数据 下载bootstrap 下载bootstrap table jquery谁都有,不说了 项目结构:T ...
- selenium+unittest自动化测试
学了unittest+接口测试后,又试着用框架去做UI测试.感觉还是很好用的. 项目里该有的基本都有了,供以后扩展学习做个参考. 链接:https://github.com/Mollylin0/mon ...
- DLL 破解工具
1.Reflecter+Reflexil (第一类) 2.本文使用的工具下载地址为:(第二类) https://github.com/cnxy/dnSpy/archive/v4.0.0.zip 或 d ...
- 浅谈现公司的Spring Cloud微服务框架
目录 说在前面 服务注册与发现 服务网关及熔断 配置中心 消息中心.服务链路追踪 小言 说在前面 本文偏小白,大佬慎入,若有错误或者质疑,欢迎留言提问,谢谢,祝大家新年快乐. spring cloud ...
- 微信小程序外包 就找北京动软 专业承接微信小程序定制
很多人问为什么要开发微信小程序,微信小程序的“入口”在哪儿? 1.只有访问过的小程序,才会出现所谓的「入口」. 所有访问过得小程序都可以从微信首屏下面的「发现」点过去.(必须是最新版微信) 这个所谓的 ...
- Qt551.窗口滚动条
1.代码的方式来创建 ScrollArea,然后使用 倒是 正常(有滚动条显示),但是此方式太麻烦 不如直接拖控件来的方便直观快捷. 但是,直接拖控件的方式 ScrollArea中无法显示出 滚动条, ...
- CSS3 3D图片立方体旋转
html <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <titl ...
- 【转】Appium如何定位安卓APP元素
转载原文:https://www.jianshu.com/p/efe9dcf8bbaf 一.定位工具 在安装appium环境的时候我们已经安装了SDK,里面就自带有元素定位的工具,位置在.../sdk ...