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) ...
随机推荐
- shell 判断操作系统
#!/bin/sh a=`uname -a` b="Darwin" c="centos" d="ubuntu" if [[ $a =~ $b ...
- 方法型混淆js代码
const fs = require('fs'); const acorn = require('acorn'); const walk = require("acorn-walk" ...
- elasticsearch-py 解决 too_long_frame_exception 问题
elasticsearch-py 解决 too_long_frame_exception 问题 老大让我搞一搞数据统计,配环境时遇到个奇葩错误,记录一下,希望能帮助到某些人. 我需要安装 Elasti ...
- win10安装ubuntu双系统遇到的问题
安装过程学习了几个博客 Ubuntu 16.04与Win10双系统双硬盘安装图解:https://www.cnblogs.com/coxiseed/p/9945202.html?tdsourcetag ...
- ChIP-seq | ATAC-seq | 数据分析流程
思来想去,还是觉得ENCODE的流程靠谱,所以又花了快一周来调试,终于排除万难,跑成功了.[2019年12月08日] 以下是ATAC生成的结果目录: call-align call-call_peak ...
- linux剪贴板
ubuntu下的用户可以只用apt-get来安装: `sudo apt-get install xclip ` 其他发行版的用户可以选择自己的安装方式,也可以用源码编译安装,xclip项目的主页是:h ...
- Android ANR log trace日志文件分析
版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_25804863/article/ ...
- ANR日志分析
2018年06月27日 16:28:13 Hello__code 阅读数 3427更多 分类专栏: bug记录 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出 ...
- g-api notes
目录 Q: What is GOrigin? What the meaning of parameters GMat(const GNode &n, std::size_t out) Q: h ...
- kotlin基础 函数编写规则