MOOC C#笔记(一):数据类型
C#笔记
基础知识
一个C#程序主要包括以下部分:
命名空间声明(Namespace declaration)
一个 class
Class 方法
Class 属性
一个 Main 方法
语句(Statements)& 表达式(Expressions)
关于Main函数的一些注意事项:C#中Main()函数为什么必须是静态的?
注释
数据类型、变量与常量
程序的基本任务是:对数据进行处理。
数据分为变量(variable)与常量(literal)
int age=18;
变量的值可以改变,本质上是内存的空间,用来存储信息。
常量的值是固定的,直接写出来,称字面常量(literal)
关于字面量、常量和变量有什么区别:
1,在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation)。几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数、浮点数以及字符串;而有很多也对布尔类型和字符类型的值也支持字面量表示;还有一些甚至对枚举类型的元素以及像数组、记录和对象等复合类型的值也支持字面量表示法。
2,“常量”在程序运行时,不会被修改的量。换言之,常量虽然是为了硬件、软件、编程语言服务,但是它并不是因为硬件、软件、编程语言而引入。
常量区分为不同的类型,如25、0、-8为整形常量,6.8、-7.89为实型常量,‘a’‘b’为字符常量。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。
3,变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的;但在纯函数式语言(如Haskell)中,变量可能是不可变(immutable)的。在一些语言中,变量可能被明确为是能表示可变状态、具有存储空间的抽象(如在Java和Visual Basic中);但另外一些语言可能使用其它概念(如C的对象)来指称这种抽象,而不严格地定义“变量”的准确外延。
变量命名(identifier,标识符)要遵守如下规则:
(1)不能是C#关键字。
(2)由字母、数组、下划线构成。
(3)第一个字符必须是字母或下划线。
(4)不要太长,一般不超过31个字符为宜。
(5)变量名最好不要与库函数、类名相同。
与C/C++类似,与C/C++一样C#是大小写敏感的。
变量命名方法:匈牙利命名法
数据类型
数据类型:本质上是数据存储方式及其能参与的运算的抽象。
如图:
C#数据类型分两大类:
1.值类型(Value Type)
2.引用类型(Reference Type)
前者如:int,double,Point,Size,DataTime。
后者如:Button,Label,Book,Person。
两者的区别在于类型是直接存储在对应的空间内,而引用类型则在对应的位置存储一个指针(或者叫引用),该指针指向对应的数据。
任何变量都有类型。
值类型包括:
简单类型(Simple Type)
结构类型(Struct Type)
枚举类型(Enum Type)
引用类型包括:
类类型(Class Type)
接口类型(Interface Type)
委托类型(Delegate)
数组类型(Array Type)
注意:每种简单类型都有一个关键词
int相当于System.Int32
double相当于System.Double
bool相当于System.Boolean
string相当于System.String
(如果using System,则string相当于String)
关于数据类型的一些细节
整数类型又分为:
有符号 sbyte short int long 和87L,0x1F(注:没有八进制写法)
无符号 byte ushort uint ulong 如87UL
字符类型 char 如'a' '\uA0B1'表示Unicode'\n'(回车)
实数类型又分为:
float 如3.14F
double 如3.14 1.5E-3 3.14D(后面这个D可以省略)
十进制类型
Decimal 如120.50M
布尔类型
bool 如true false(小写)不能用0和1代替(区别于C/C++)
字符类型
char型数据用来表示通常意义上“字符”。
字符变量是用单引号括起来的单个字符。
char c='A';
C#字符采用Unicode编码,每个字符占两个字节,因而可用十六进制编码形式表示
char c1='\u0061';
C#语言中还允许使用转义字符''来将后面的字符转变为其它的含义。
char c2='\n'; //代表换行符
转义字符与C语言中的类似,值得一提的是\r 与\n的不同,\r表示回车,\n表示换行。
字符串类型
是引用类型,但对字符串常量有特殊处理。
字符串前可以使用@,加了@的字符串可以换行写,可以不进行\转义,可以换行,双引号则用两个双引号表示一个双引号。
针对C++程序员来说,引用类型与值类型是由其类型定义的,而不是由其使用决定的(不存在*&这些符号类指定类型的类型)。
C#新版本中的特殊类型
1.推断类型(C#3.0)
var a=1+2;
var表示其类型又编译器推断,而不是自己指定。
2.Nullable类型(C#3.0)
int? a=32;
可以有值可以没有值,在数据库中常用。
3.Dynamic(C#4.0)由DLR支持
编译时不检查,运行时才确定,主要用于与COM组件或其他语言交互。
运算符与表达式
运算符
基本与C/C++类似,不赘述,多了一个字符串连接运算符:+。
+运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后在进行连接
表达式
表达式是符合一定语法规则的运算符和操作数的序列。
表达式有类型和值,对表达式中的操作数进行运算得到的结果称为表达式的值。该值的类型称为表达式的类型。
赋值时的默认类型转换与C/C++的原则是一致的,值得一提的是C#中的强制类型转换:
字符串转换成数值:
double.Parse(s) int.Parse(s)
数字转成字符串:
10.ToString() 使用方法ToString();
""+10; 使用字符连接运算符来把数字转换成字符串。
使用Convert
Convert.ToInt32(textbox1.Text)
Convert.ToDouble("123.45")
Convert.ToDateTime*("2019-10-01 14:00")
流程控制语句
结构化的程序设计的三种基本流程:顺序、选择、循环。
顺序语句
方法调用语句和赋值语句都为顺序语句(简单语句)
C#中没有表达式语句这一概念。
分支语句
if-else与C语言的if-else一 致。
在VS中按Ctrl+E+D(格式文档)
按Ctrl+E+F(格式化选中部分)
switch语句与C/C++不同的是,变量可以为字符串类型。
另外如果在C#中switch语句不加break编译器会报错。
循环语句
循环五要素:
初始化部分
循环条件部分
循环体部分
迭代部分,我们称为“循环改变”
结束后处理
C#中的数组(与C/C++大不相同)
C#中的数组是引用类型。
以下为数组的声明方式:
int[] a1;
注意方括号写到变量名的前面
C#中声明数组时不能指定其长度(数组中元素的个数),这与C/C++不一样。
每个数组都有一个属性Length指明它的长度。
foreach语句可以方便的处理数组、集合中的各元素。(不可以在foreach中改变数组的内容,只读式遍历)。
C#中的多维数组与交错数组是不同的概念,这与C/C++似乎不同,因为在C/C++中我们一般把多维数组看做数组的数组,然而在C#中只有交错数组才被看做数组的数组。
多维数组和交错数组的区别详见:C# 多维数组 交错数组的区别
MOOC C#笔记(一):数据类型的更多相关文章
- MOOC JAVA笔记
MOOC JAVA笔记 1.基础了解 JDK是开发人员安装的,它提供了开发java程序的必须工具 JRE是普通用户安装的,它提供了java的运行环境 JVM是java虚拟机运行程序的核心 2.程序的移 ...
- MOOC python笔记(二)python中的数据类型和基本语句
python数据类型 数字类型 整数(int) 与数学中整数概念一致(数字大小没有限制,这和其他语言不同),整数可正可负,默认情况下,整数采用十进制.其他进制需要增加相应的引导符号. 如果是二进制在前 ...
- es6学习笔记--新数据类型Symbol
学习了es6语法的symbol类型,整理笔记,闲时复习. Symbol 是es6新增的第七种原始数据类型(null,string,number,undefined,boolean,object),是为 ...
- 第3次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 4.提供图片或网站显示的学习进 ...
- 第三次作业-MOOC学习笔记:Python网络爬虫与信息提取
1.注册中国大学MOOC 2.选择北京理工大学嵩天老师的<Python网络爬虫与信息提取>MOOC课程 3.学习完成第0周至第4周的课程内容,并完成各周作业 第一周 Requests库的爬 ...
- MySQL学习笔记之数据类型
数据类型在所有的数据库使用当中,都是避免不了的部分.以前每次写SQL语句,对于定义成哪种数据类型总是迷迷糊糊,今天就来彻底弄清.以下介绍仅针对MySQL 5.5以上版本. 一.字符串类型 1.char ...
- Java学习笔记三——数据类型
前言 Java是强类型(strongly typed)语言,强类型包含两方面的含义: 所有的变量必须先声明后使用: 指定类型的变量只能接受预支匹配的值. 这意味着每一个变量和表达式都有一个在编译时就确 ...
- Redis学习笔记1-Redis数据类型
Redis数据类型 Redis支持5种数据类型,它们描述如下: Strings - 字符串 字符串是 Redis 最基本的数据类型.Redis 字符串是二进制安全的,也就是说,一个 Redis 字符串 ...
- javascript 红宝书笔记之数据类型
typeof 检测给定变量的数据类型,通过typeof来区分函数和其它对象 var message = 'some string'; console.log(typeof(message) ...
随机推荐
- Linux禁止ping和开启ping的方法
Linux默认是允许Ping响应的,系统是否允许Ping由2个因素决定的:A.内核参数,B.防火墙,需要2个因素同时允许才能允许Ping,2个因素有任意一个禁Ping就无法Ping. 一.通过修改 ...
- 在CentOS上使用Docker镜像安装Jenkins
1.必须先在CentOS上安装Docker,使用以下命名先在Docker Hub上搜索Jenkins镜像 docker search jenkins 2.下载Jenkins镜像,命令如下:(我下载的是 ...
- 第08组 Alpha冲刺(2/4)
队名 八组评分了吗 组长博客 小李的博客 作业博客 作业链接 组员1李昕晖(组长) 过去两天完成了哪些任务 文字/口头描述 11月17日了解各个小组的进度与难以攻破的地方,与隔壁第七组组长讨论进度发展 ...
- ping某域名的整个流程
实验环境:主机A,B(可不再同一网段),主机B有域名假设为www.baidu.com首先:1. 本地主机A在命令行下执行"ipconfig/flushdns"命令来清空本地DNS高 ...
- 权重轮询调度算法(WeightedRound-RobinScheduling)
权重轮询调度算法(WeightedRound-RobinScheduling)-Java实现 ----参考Nginx中负载均衡算法实现 这里主要参考这篇文章的实现: Nginx 负载均衡-加权轮询策略 ...
- 打包文件到APK安装包中
打包文件到APK安装包中 目的:将配置文件或SQLITE打包进APK中 1.首先,打开菜单 Project - Deployment 2.点击添加按钮,选择要添加的文件(文件最好放在工程目录中,这样, ...
- jsch channel is not opened原因及解决
潜在原因1:服务器sshd限制,可通过如下解决: 潜在原因2:服务器负载过高,超时.在连接处增加超时时间session.setTimeout(60000);默认情况下,socket的超时时间大约为21 ...
- spring mvc中添加对Thymeleaf的支持
一.下载Thymeleaf 官方下载地址:https://dl.bintray.com/thymeleaf/downloads/thymeleaf/ 我下载的是最新的3.0.11版本 把包里的jar包 ...
- wordpress 获取指定作者的所有 post meta
$args = array( 'post_type' => array( 'post','knowledgebase'), 'post_status' => 'publish', 'aut ...
- 图片放大神器: waifu2x
在线版可以在这个地址上使用:http://waifu2x.udp.jp/index.zh-CN.html , 但是在线版最大图片为5M,最大上传分辨率为1500*1500,且最大放大倍数为2倍,还是有 ...