zoukankan      html  css  js  c++  java
  • C# 数据类型与流程控制

    C# 数据类型与流程控制

    1. 数据类型

    C#数据类型分为两类:值类型引用类型

    • 值类型:包括简单类型、枚举类型、结构类型、可空类型
    • 引用类型:包括类、接口、数组、委托。一般把引用类型的变量称为对象
    image-20210428163432101

    下文仅介绍部分数据类型

    1.1 常量

    const double pi = 3.14;
    

    常量是在编译时设定其值,在对程序进行编译时把所有const常量全部替换为常数。

    1.2 隐式类型的局部变量

    • 隐式类型的变量不必指定“局部”变量的具体类型,而是使用var来表示类型,称为匿名类型
    • 在LINQ表达式或foreach语句中,使用匿名类型的变量比较方便。但不建议大量使用。

    在使用var类型时,虽然不是显式声明,但在编译期已经确定了其变量类型。c#中的var关键字实际上类似于c++中的auto关键字。

    1.3 简单类型

    image-20210428165212356

    1.4 字符转义

    image-20210428165925377 image-20210428170141912

    1.5 可空类型

    表示可以为null值的类型,例如int?读作可以为null的Int32类型,就是说可以将其赋值为任一个32位整数值,也可以将其赋值为null。

    int? age = 0;
    int? n = null;
    double? d = 4.108;
    bool? isFlag = false;
    

    在处理数据库和其他包含不可赋值的元素的数据类型时,可以为null的值类型特别有用。

    1.6 字符串

    image-20210428170648039

    1.7 数组

    c# 中的多维数组实际上是张量tensor

    示例:

    • 一维数组
    int [] arr = {1, 2, 3, 4, 5};
    int len = arr.Length
    for(int i = 0; i < len; ++i)
    {
        Console.WriteLine(arr[i]);
    }
    
    • 二维数组
    int [,] arr = { { 1, 2 }, { 3, 4 }, { 5, 6 } };
    int r = arr.GetLength(0);
    int c = arr.GetLength(1);
    for(int i = 0; i < r; ++i)
    {
        for(int j = 0; j < c; ++j)
        {
            Console.WriteLine(arr[i, j]);
        }
    }
    
    • 三维数组
    int [,,] arr = { { { 1, 2 }, { 3, 4 } }, { { 5, 6 }, { 7, 8 } } };
    int d0 = arr.GetLength(0);
    int d1 = arr.GetLength(1);
    int d2 = arr.GetLength(2);
    for(int i = 0; i < d0; ++i)
    {
        for(int j = 0; j < d1; ++j)
        {
            for(int k = 0; k < d2; ++k)
            {
                Console.WriteLine(arr[i, j, k]);
            }
        }
    }
    

    交错数组

    交错数组是一个一维数组,每一个元素又是一个数组对象

    // 1. 交错数组, 每个元素是一个一维数组
    int[][] arr = new int[2][]
    {
        new int[]{ 1, 2, 3, 4, 5, 6 },
        new int[]{ 7, 8, 9, 10, 11, 12 }
    };
    int len = arr.Length;
    for(int i = 0; i < len; ++i)
    {
        int ll = arr[i].Length;
        for(int j = 0; j < ll; ++j)
        {
            Console.WriteLine(arr[i][j]);
        }
    }
    
    // 2. 交错数组, 每个元素又是一个二维数组
    int[][,] arr = new int[2][,]
    {
        new int[,] { { 2, 4 },{ 6, 8 } },
        new int[,]{ { 1, 3 }, { 5, 9 } }
    };
    
    int len = arr.Length;
    for(int i = 0; i < len; ++i)
    {
        int r = arr[i].GetLength(0);
        int c = arr[i].GetLength(1);
        for(int j = 0; j < r; ++j)
        {
            for(int k = 0; k < c; ++k)
            {
                Console.WriteLine(arr[i][j, k]);
            }
        }
    }
    

    2. 运算符和表达式

    System.Type tp = typeof(int)
    

    获取类型的Type对象

    2.2 is 运算符

    检查对象是否为某一个类的实例,返回一个布尔值。

    if(o is Class1){
        a = (Class1)o;
    }
    

    2.3 as 运算符

    x as T为返回类型为T的x,如果x不为T类型则返回null

    Class1 c = b as Class1;
    if(c != null){
        // ...
    }
    

    2.4 foreach语句

    foreach(类型 标识符 in 表达式){
        语句序列
    }
    // 注意:循环变量是一个只读的局部变量
    
    ---- suffer now and live the rest of your life as a champion ----
  • 相关阅读:
    C语言学生管理系统(原版本)(自编)
    【JavaScript】解构赋值
    【JavaScript】箭头函数
    【JavaScript】typeof 和 instanceof
    【JavaScript】Proxy 实例方法(二)
    【JavaScript】Proxy 实例方法(一)
    【JavaScript】Reflect 静态方法(二)
    【JavaScript】Reflect 静态方法(一)
    【JavaScript】async function
    开发系统关键字(例子)
  • 原文地址:https://www.cnblogs.com/popodynasty/p/14727123.html
Copyright © 2011-2022 走看看