zoukankan      html  css  js  c++  java
  • 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' '(回车)
    实数类型又分为:
    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=' '; //代表换行符
    转义字符与C语言中的类似,值得一提的是 与 的不同, 表示回车, 表示换行。

    字符串类型

    是引用类型,但对字符串常量有特殊处理。
    字符串前可以使用@,加了@的字符串可以换行写,可以不进行转义,可以换行,双引号则用两个双引号表示一个双引号。
    针对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# 多维数组 交错数组的区别

  • 相关阅读:
    简述 JPA 与 Spring Data JPA 与 Hibernate
    idea不识别yml配置文件,怎么办?
    Java 数组如何转成List集合
    git关于 LF 与 CRLF
    git报错:src refspec master does not match any
    蓝桥杯- 基础练习:十六进制转八进制
    蓝桥杯- 基础练习:数列排序
    蓝桥杯-入门训练 :A+B问题
    蓝桥杯-入门训练 :序列求和
    蓝桥杯-入门训练 :圆的面积
  • 原文地址:https://www.cnblogs.com/z-y-k/p/11628477.html
Copyright © 2011-2022 走看看