前言

如题,对博主学习C#编程语言做个笔记,因为大学期间学习过C#,本篇只做简单记录。

开发环境

vs2017

计算机结构

可以简单理解为

  • 输入设备
  • 控制器:控制程序执行
  • 运算器
  • 存储器
  • 输出设备

Hello World

1
2
3
4
5
6
7
8
9
10
11
12
13
14
namespace Examples
{
class Program
{
static void Main(string[] args)//程序开始执行的地方
{
string inputStr = null;//定义变量并赋值,告诉计算机分配多大的存储空间
inputStr = Console.ReadLine();//ReadLine()读取数据
string outputStr = "Hi," + inputStr;
Console.WriteLine(outputStr);
Console.ReadKey();//让DOS窗口接收一个字符才会退出。
}
}
}

关键字、命名规则

C#关键字
命名规则:

  • 不能使用关键字
  • 开头第一个字母只能是字母或者_,后面可以跟数字、字母、_,不能出现空格、运算符、标点符号等
  • 区分大小写
  • 不能与关键字相同
    具体命名规范

存储单位

  • 1 Bit(位)表示0或1 (对应计算机硬件的基础存储单位)
  • 1 Byte(字节)=8 Bit (2^8=256)
  • 1 B =8 b
  • 1024 = 2^10
  • 1KB(Kilobyte,千字节)=1024B
  • 1MB(Megabyte,兆字节)=1024KB
  • 1GB(Gigabyte,吉字节,千兆)=1024MB
  • 1TB(Trillionbyte,万亿字节,太字节)=1024GB

各类型变量字节大小

  • int 4字节(Byte)32位 有符号整数,可以定义为负数 -2147483648到2147483647
  • uint 4字节 0-4294967295 0和整数,不能表示负数
  • float 4字节
  • double 8字节
  • bool 由编译器决定
  • 其他 sbyte,short,long,ushort,ulong 8,16,64,64
  • char 2字节 ‘a’,’急’;char valChar = 'z' ;
  • string 由多个char组成,string valString = "要吃就莱。";
    1
    2
    3
    4
    5
    6
        string valStr = "Hello,BoiledYakult";
    // 0123456789...下标从0开始
    int length = valStr.Length;//字符串长度lengeh=18
    int index = valStr.IndexOf("Boiled");//查找字符串中第一个匹配项的从零开始的索引,index=6
    string strResult = valStr.Replace("hello", "Preditor");//替换字符串
    string subStr = valStr.Substring(7, 2);//截取BoiledYakult
  • M[]数组,存储多个M类型数据,eg:int[] ary=new int[10];
    1
    2
    3
    ary[0]=3;
    int intVal=ary[3];
    //长度ary.Length

类型转换

1
2
3
4
5
6
7
8
9
10
11
double valDoule = 6.28;
float valFloat = (float)valDoule;//显式类型转换【高精度转换为低精度-强制类型转换】
double valDouble2 = valFloat;//隐式类型转换
int valInt = (int)valFloat;//valInt=6

//数值类型和string类型转换
string valStr2 = "5";
int valInt2 = int.Parse(valStr2);
long valLong = long.Parse(valStr2);
string valStr3 = valLong.ToString();
Console.WriteLine(subStr);

自增&&字符串格式化

  • 自增自减
    • ++i // i=i+1;return i;
    • i++ // int r=1; i=i+1; return r;
      1
      2
      3
      4
      5
      6
      7
      8
      9
      int valInt = 4;
      int postInt = valInt++;// postInt = 4; valInt = 5;
      valInt = 4;
      int perInt = ++valInt;// PostInt =5;valInt = 5;

      valInt = 4;
      int postDec = valInt--;// postDec = 4; valInt = 3;
      valInt = 4;
      int perDec = --valInt;// PostInt =3;valInt = 3;
  • += -=
    • a += b; == a = a+b;
    • a -= b; == a = a-b;
  • 字符串内插$”info = {a}”
    1
    2
    3
    4
    int result =3;
    string inputStr = "val";
    string str1 = intputStr+ "的计算结果为:" + result;
    string str2 = $"{inputStr}的计算结果为:{result}";

函数

  • 返回值类型 函数名(参数列表){任意条指令;return 返回值;}
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void PrintHelloworld()
    {
    Console.Write("HelloWorld!");
    }
    void PrintValue(string val)
    {
    Console.Write(val);
    }
    float MulAdd(float val1,float val2,float addNum)
    {
    return val1*val2+addNum;
    }

    float mul1 = 3;
    float mul2 = 100.5f;
    float add1= 32;
    float result = MulAdd(mul1,mul2,add1);
    PrintValue("Result: ");
  • 减少重复代码
  • 封装实现细节

简单案例

  • 加法计算器:从控制台输入你想计算的公式3+5.要求中间不能有空格
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Console.WriteLine("请输入加法算术题,按回车结束");
    //52+468
    //012345
    string inputStr = Console.ReadLine();
    int plusIdx = inputStr.IndexOf("+");//查找加号运算符位置
    string numStr1 = inputStr.Substring(0, plusIdx);//截取从位置0到加号运算符之间的第一个加数
    int strLen = inputStr.Count();//计算输入字符串的长度
    string numStr2 = inputStr.Substring(plusIdx + 1, strLen - plusIdx - 1);//截取加号运算符后面的被加数
    float num1 = float.Parse(numStr1);//强制类型转换,将获取的加数和被加数字符串转换成浮点类型
    float num2 = float.Parse(numStr2);
    float sum = num1 + num2;
    Console.WriteLine(inputStr + " = " + sum);

Bool 比较

< > <= >= == !=

Bool 组合

    • !对一个值取反,!true==false !!false=false
    • a && b 仅在两边都为true时返回值为true
    • a || b有一个true就返回true,都为false时返回false

条件语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
tring title = "";
string gender = Console.ReadLine();
if (gender=="男")
{
title = "帅哥";
}
else
{
itle = "女";
}
Console.WriteLine($"这位{title},要吃就莱!");
//$ 特殊字符将字符串文本标识为内插字符串 。
//内插字符串是可能包含内插表达式的字符串文本 。
//将内插字符串解析为结果字符串时,带有内插表达式的项会替换为表达式结果的字符串表示形式。
// 从 C# 6 开始可以使exit用此功能。

//字符串内插为格式化字符串提供了一种可读性和便捷性更高的方式。 它比字符串复合格式设置更容易阅读。