一、C#入门
创始人
2024-03-01 20:05:10
0

文章目录

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

点击访问 C# 官方文档

1、注释

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

2、折叠代码

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

3、C# 的类型系统

  • 值类型

    • 简单类型

      • 有符号整型:sbyteshortintlong

      • 无符号整型:byteushortuintulong

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

      • IEEE 二进制浮点:floatdouble

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

      • 布尔值:bool,表示布尔值(truefalse

      • 枚举类型

        • 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;

5、转义字符 \

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

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;

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");

6.2.3、Conver

  • 更准确的将 各个类型之间进行相互转换
    • Conver.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");

6.2.4、其他类型转string

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

7、异常捕获

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

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"
  • string.Format("待拼接内容", ..."内容段")
string name = "小白";
int age = 18;
string hobby = "吃饭睡觉打代码";
Console.WriteLine(string.Format("我是{0},今年{1}岁,爱好:{2}", name, age, hobby));
// 我是小白,今年18岁,爱好:吃饭睡觉打代码

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

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
      
  • while

  • do…while

相关内容

热门资讯

AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWR报告解读 WORKLOAD REPOSITORY PDB report (PDB snapshots) AW...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
群晖外网访问终极解决方法:IP... 写在前面的话 受够了群晖的quickconnet的小水管了,急需一个新的解决方法&#x...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
Azure构建流程(Power... 这可能是由于配置错误导致的问题。请检查构建流程任务中的“发布构建制品”步骤,确保正确配置了“Arti...