码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 一、C#入门


    文章目录

    • 1、注释
    • 2、折叠代码
    • 3、C# 的类型系统
    • 4、常量 `const`
    • 5、转义字符 `\`
    • 6、类型转换
      • 6.1、隐式类型转换(自动)
      • 6.2、显式类型转换(手动)
        • 6.2.1、括号强转
        • 6.2.2、Parse 专门针对字符串
        • 6.2.3、Convert
        • 6.2.4、其他类型转string
    • 7、异常捕获
    • 8、运算符
      • 8.1、算数运算符
      • 8.2、字符串拼接
      • 8.3、条件运算符
      • 8.4、逻辑运算符(优先级:! >>> &&||)
      • 8.5、位运算符
      • 8.6、三目运算符
      • 8.7、其他运算符
    • 9、条件分支
    • 10、循环

    点击访问 C# 官方文档

    1、注释

    • 单行注释://xxx
    • 多行注释:/*xxx*/
    • 特定注释:///

    2、折叠代码

    • 由 #region 和 #endregion 配对出现;使长篇代码更清晰
    • 是编辑器提供给我们的 预处理命令,只在编辑时有用(说白了就是给程序员看的)
    #region 折叠区域名字
    // 这里是为了处理一个事务的一大堆逻辑的代码
    #endregion
    
    • 1
    • 2
    • 3

    3、C# 的类型系统

    • 值类型

      • 简单类型

        • 有符号整型:sbyte、short、int、long

        • 无符号整型:byte、ushort、uint、ulong

        • Unicode 字符:char,表示 UTF-16 代码单元

        • IEEE 二进制浮点:float、double

        • 高精度十进制浮点数:decimal

        • 布尔值:bool,表示布尔值(true 或 false)

        • 枚举类型

          • enum E {...} 格式的用户定义类型。 enum 类型是一种包含已命名常量的独特类型。 每个 enum 类型都有一个基础类型(必须是八种整型类型之一)。 enum 类型的值集与基础类型的值集相同。
        • 结构类型

          • 格式为 struct S {...} 的用户定义类型
        • 可以为 null 的值类型

          • 值为 null 的其他所有值类型的扩展
      • 元组值类型

        • 格式为 (T1, T2, ...) 的用户定义类型
    • 引用类型

      • 类类型

        • 其他所有类型的最终基类:object

        • Unicode 字符串:string,表示 UTF-16 代码单元序列

        • 格式为 class C {...} 的用户定义类型

        • 接口类型

          • 格式为 interface I {...} 的用户定义类型
        • 数组类型

          • 一维、多维和交错。 例如:int[]、int[,] 和 int[][]
      • 委托类型

        • 格式为 delegate int D(...) 的用户定义类型

    4、常量 const

    • 必须初始化
    • 不能被修改
    const int xxx = 0;
    
    • 1

    5、转义字符 \

    • 在字符串中呈现特殊字符,例如双引号
    string str = "abc\"def"; // abc"def
    
    • 1
    • 取消转移符号 @
    string str = @"abc\tdef"; // abc\tdef
    
    • 1

    6、类型转换

    6.1、隐式类型转换(自动)

    低精度可自动转高精度

    以下三类也可交叉转换,前提必须是小类型可自动转大类型,大类型范围必须完全包含小类型范围

    • 有符号:sbyte >>> short >>> int >>> long
    • 无符号:byte >>> ushort >>> uint >>> ulong
    • 浮点型:float >>> double ××× decimal
      • decimal比较特殊,它不能被float和double隐式转换,但可隐式存储整型

    特殊类型单独拎出来说明如下:

    • bool ××× 不能隐式转也不能隐式被转
    • char 只能将其对应的ASCII码隐式转换为整型(其实就是int),然后int又隐式转换成其他可转换的类型
    • string ××× 不能隐式转也不能隐式被转

    6.2、显式类型转换(手动)

    6.2.1、括号强转

    • 高精度强制转换为低精度
      • 不支持:bool 和 string
      • 问题:精度丢失和数据溢出
    int i = 1;
    byte bt = (byte)i;
    
    • 1
    • 2

    6.2.2、Parse 专门针对字符串

    • 把字符串强制转换成其他类型
      • 必须符合要转换成的类型的格式和范围否则编译报错,
    // 正常转
    string strnum = "18";
    int num01 = int.Parse(strnum);
    float f = float.Parse(strnum);
    bool bo = bool.Parse(strnum);
    
    // 直接报错栗子
    // int num = int.Parse("123.45");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6.2.3、Convert

    • 更准确的将 各个类型之间进行相互转换
      • Convert.ToXxx(参数)
      • 填写的变量或常量必须正确(字符串和parse一样的规则)否则编译报错
      • 转数字比第一种括号强转人性化一点,精度丢失时会四舍五入
    // 正常转
    int num = Convert.ToInt32(4.5); // 5
    int numTrue = Convert.ToInt32(true); // 1
    int numFalse = Convert.ToInt32(false); // 0
    float flo = Convert.ToSingle("123.456789"); // 123.4568
    
    // 直接报错栗子
    // int num = Convert.ToInt32("123.45");
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    6.2.4、其他类型转string

    • .toString()
    • +:字符串拼接
    int num = 18;
    string str0 = num.ToString();
    string str1 = num + "";
    
    • 1
    • 2
    • 3

    7、异常捕获

    try {
        // 可能抛出异常的代码
    } catch (Exception e) { // 不关心到底是什么引起的异常时,捕获信息(Exception e)可省略
        // 异常处理
    } finally {
        // 必执行的代码
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    8、运算符

    8.1、算数运算符

    • 赋值符号: =
    • 算数运算符(优先级:*/% >>> ±)
      • 加:+
      • 减:-
      • 乘:*
      • 除以: /
      • 取余:%
    • 复合运算符:+=、-=、*=、/=
    • 自增减
      • ++
        • num = i++;num是i
        • num = ++i:num是i+1

      • 同++

    8.2、字符串拼接

    • +
    string str = "abc-" + 1 + 2; // "abc-12"
    str += 2 + 3 + "-xx"; // "abc-125-xx"
    string s2 = true + "-a"; // "True-a"
    
    • 1
    • 2
    • 3
    • string.Format("待拼接内容", ..."内容段")
    string name = "小白";
    int age = 18;
    string hobby = "吃饭睡觉打代码";
    Console.WriteLine(string.Format("我是{0},今年{1}岁,爱好:{2}", name, age, hobby));
    // 我是小白,今年18岁,爱好:吃饭睡觉打代码
    
    • 1
    • 2
    • 3
    • 4
    • 5

    8.3、条件运算符

    • 大于:>
    • 小于:<
    • 等于:==
    • 不等:!=
    • 大于等于:>=
    • 小于等于:<=

    8.4、逻辑运算符(优先级:! >>> &&||)

    • 逻辑与:&&
    • 逻辑或:||
    • 逻辑非:!

    8.5、位运算符

    • 位与:&
      • 有0则0
      • 栗子:1&5 = 1
    • 位或:|
      • 有1则1
      • 栗子:1&5 = 5
    • 异或:^
      • 相同为0,不同为1
      • 小公式:m = m ^ n ^ n
      • 栗子:1^5 = 4
    • 位取反:~
      • 对位运算,1变0,0变1
      • 栗子:~5 = -6(负数转二进制需要取反+1)
    • 左移:<<
      • 相当于往右补位(用0补位)
      • 左移几位就×2的几次幂
      • 栗子:1<<5 = 32
    • 右移:>>
      • 相当于往往左补位(用最高位数字补位)
      • 右移几位就÷2的几次幂
      • 栗子:32>>5 = 1

    8.6、三目运算符

    ​ bool : true ?false

    8.7、其他运算符

    • sizeof(int):查看占用内存大小
      • console:4
    • typeof(int):查看类型
      • console:System.Int64
    • is:判断对象是否属于一个类型
      • 13 is int:true
    • as:强制类型转换(只适用于支持空值的类型转换)
      • string s = obj as string
      • 与string s = (string)obj唯一区别就是转换失败不会报错,会给赋空

    9、条件分支

    • if

    • switch

    10、循环

    • for

    • foreach

      • int [] B = { 11,22,33,44,55 };
        
        foreach(int t in B){
            Console.WriteLine(t);
        }
        // 11 22 33 44 55
        
        • 1
        • 2
        • 3
        • 4
        • 5
        • 6
    • while

    • do…while

  • 相关阅读:
    CSDN每日一题学习训练——Java版(二叉搜索树迭代器、二叉树中的最大路径和、按要求补齐数组)
    EtherNet/IP转profienrt协议网关连接EtherNet/IP协议的川崎机器人配置方法
    Vue编程式路由导航
    季铵盐离子液体4-(苯甲酸)三乙胺溴(QAIL)固载金属-有机骨架材料MIL-101(科研)
    有没有开源的虚拟路由器?有,VPP了解一下
    hadoop 3.3大数据集群搭建系列3-安装Hive
    重启服务器后,由于内核自动升级,显卡无法使用,卸载不彻底,重装失败,安装日志报如下问题
    MySQL中的隐式转换造成的索引失效
    shell编程100例,查缺补漏
    MySQL官方文档如何查看,MySQL中文文档
  • 原文地址:https://blog.csdn.net/qq_30769437/article/details/128107631
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号