C#入门篇

控制台的输入与输出

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("A: 最近怎么样啊!");
            Console.WriteLine("B: 最近一切都还好");
            Console.Write("B: 你们开学了吗");
            Console.Write("B: 啥时候开学啊?");
            Console.ReadLine();// 输入+回车才结束
            Console.ReadKey();// 只要输入就结束
        }
    }
}

C#入门篇_第1张图片

  •  Console.WriteLine("")向控制台输出并换行
  • Console.Write("")向控制台输入不换行
  • Console.ReadLine()等待输入 + 回车结束
  • Console.ReadKey()等待输入 + 只要按键就结束

变量

折叠代码 

C#入门篇_第2张图片

  •  #region+[tab]:快速生成折叠代码框
  • 折叠代码主要目的是使自己的代码有条理性,

14个变量 

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region 1.有符号整形变量
            sbyte sb = 1;
            int i = 0;
            short s = 0;
            long l = 0;
            #endregion
            #region 2.无符号整形变量
            byte b = 1;
            uint u = 0;
            ushort v = 0;
            ulong ul = 0;
            #endregion
            #region 3.浮点数
            float f = 1.23f;//一般存储7/8位有效数字
            double d = 1.23;//一般存储15~17位有效数字
            decimal de = 1.23m;//一般存储27~28位有效数字
            #endregion
            #region 4.特殊类型
            bool bo = true;
            char c = 'a';// 单个字符
            string str = "字符串";// 多个字符
            #endregion
        }
    }
}
  • 有符号整形变量: sbyte,int,short,long,
  • 无符号整形变量byte,uint,ushort,ulong
  • 浮点数:float,double,decimal
  • 特殊类型:bool,char,string
  • 注意: 小数默认是double类型的,赋给float需要加f,赋给decimal需要加m

 14个变量的大小

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            #region 1.各个有符号整形变量所占字节数
            Console.WriteLine("syte 所占字节数"+ sizeof(sbyte));
            Console.WriteLine("int 所占字节数" + sizeof(int));
            Console.WriteLine("short 所占字节数" + sizeof(short));
            Console.WriteLine("long 所占字节数" + sizeof(long));
            Console.WriteLine("-------------------------------");
            #endregion
            #region 2.各个无符号整形变量所占字节数
            Console.WriteLine("byte 所占字节数" + sizeof(byte));
            Console.WriteLine("uint 所占字节数" + sizeof(uint));
            Console.WriteLine("ushort 所占字节数" + sizeof(ushort));
            Console.WriteLine("ulong 所占字节数" + sizeof(ulong));
            Console.WriteLine("-------------------------------");
            #endregion
            #region 3.各个浮点数所占字节数
            Console.WriteLine("float 所占字节数" + sizeof(float));
            Console.WriteLine("double 所占字节数" + sizeof(double));
            Console.WriteLine("decimal 所占字节数" + sizeof(decimal));
            Console.WriteLine("-------------------------------");
            #endregion
            #region 4.各个特殊类型所占字节数
            Console.WriteLine("bool 所占字节数" + sizeof(bool));
            Console.WriteLine("char 所占字节数" + sizeof(char));
            // Console.WriteLine("string 所占字节数" + sizeof(string));// error
            #endregion
        }
    }
}

C#入门篇_第3张图片

  •  注意1: 在C#中char类型所占大小为2字节
  • 注意2: sizeof(string)是非法的,因为string准确的来说是容器 

 常用命名规则

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 驼峰命名法 - 首字母小写,之后单词首字母大写(多用于变量)
            string myName = "lyc";
            string yourName = "你的名字";
            
            // 帕斯卡命名法 - 所有单词首字母都大写(多用于函数, 类)
            // 暂时不写函数,就使用变量
            string MyName = "lyc";
            string YourName = "你的名字";
        }
    }
}
  • 驼峰命名法-首字母小写,之后单词首字母大写(多用于变量)
  • 帕斯卡命名法-所有单词首字母都大写(多用于函数,类)
  • 补充: C#中对大小写是敏感的,区分大小写

常量 

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 常量必须初始化,且不能被修改
            const int i = 20;
            const float PI = 3.1415926f;// 圆周率
        }
    }
}
  •  固定写法: const 变量类型 变量名 = 初始值
  • 特点: 常量必须初始化,不能被修改
  • 作用: 声明一些常用不变的变量

不常用的转义字符 

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 制表符(空一个tab键)
            string s = "字\t符串";
            Console.WriteLine(s);
            
            // 光标退格(可能会被覆盖)
            s = "123\b123";
            Console.WriteLine(s);
            
            // 空字符(没什么用)
            s = "222\0333";
            Console.WriteLine(s);
            
            // 警报音("滴"的一声)
            s = "\a";
            Console.WriteLine(s);
        }
    }
}

 C#入门篇_第4张图片

  •  \t制表符,\b光标退格,\0空字符,\a警报音

取消转义字符

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            string s = "123\n123";
            Console.WriteLine(s);
            string stt = @"123\n123";
            Console.WriteLine(stt);
        }
    }
}

C#入门篇_第5张图片

  • 只需要在字符串前面加一个@,就可以取消转义字符的作用 

隐式类型转换

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 大范围能存小范围
            float f = 1.1f;
            double d = f;
            Console.WriteLine(d);
            // decimal这个类型,是没有办法用隐式转换的形式,去存储double和float
            // decimal de = f;//error
        }
    }
}
  • decimal这个类型,是没有办法用隐式转换的形式,去存储double和float
  • 总结: 只能是大范围存储小范围 

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 浮点数是可以装载任何类型的 整数
            float f = -1;
            Console.WriteLine(f);

            float f1 = 10000000000000000000;//但是也不能太大
            Console.WriteLine(f1);
            // deciaml不能隐式存储 float和double,但是它可以隐式的存整形
            decimal de = -1;
            Console.WriteLine(de);

            float de1 = 10000000000000000000;//但是也不能太大
            Console.WriteLine(de1);
        }
    }
}

 C#入门篇_第6张图片

  •  总结: 浮点数是可以装载任何类型的整数,但是也不能太大
  • deciaml不能隐式存储 float和double,但是它可以隐式的存整形

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // char类型,可以隐式的转换成整形,和浮点型
            char c = 'a';
            int a = c;
            Console.WriteLine(c);
            float f = c;
            Console.WriteLine(c);
        }
    }
}

C#入门篇_第7张图片 

  •  char类型,可以隐式的转换成整形,和浮点型,主要原因是ASCLL码表

 显示类型转换

using System.Security.Cryptography;

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Parse法: 
            // 作用: 把字符串类型转换为对应的类型
            // 语法: 变量类型.Parse("字符串")
            // 注意: 字符串必须能够转换成对应类型,否则报错
            int i1 = int.Parse("1");
            Console.WriteLine(i1);

            // Convert法
            // 作用: 更准确的将 各个类型之间进行相互转换
            // 语法: Convert.To目标类型(变量或常量)
            // 注意: 填写的变量或常量必须正确 否则报错
            //      且如果是字符串转成对应类型,那字符串一定要合法合规
            int a = Convert.ToInt32("2");
            Console.WriteLine(a);

            // 其他类型转string
            // 作用: 拼接打印
            // 语法: 变量.toString();
            int b = 1024;
            string s = b.ToString();
            Console.WriteLine(s);
        }
    }
}
  • 变量类型.Parse("字符串"),把字符串类型转换为对应的类型
  • Convert.TO目标类型(变量或常量),更准确的将 各个类型之间进行相互转换
  • 变量.toString(),其他类型转string

补充一个知识点 

using System.Security.Cryptography;

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("请输入你的年龄: ");
            string s = Console.ReadLine();
            int age = int.Parse(s);
            Console.WriteLine(age);
        }
    }
}

C#入门篇_第8张图片

 异常捕获

C#入门篇_第9张图片

C#入门篇_第10张图片

  •  try代码块中: 放希望进行异常捕获的代码块,如果代码报错了,不会让程序卡死,
  • catch代码块中: 如果try代码块中出错了,会执行catch中的代码,来捕获异常
  • cath(Exception e)具体报错跟踪,通过e得到 具体的错误信息,
  • finally代码块中: 这里面的代码,不管try中的代码报没报错,都会执行其中的代码

字符串拼接方式 &&  控制台打印拼接

using System.Security.Cryptography;

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // 字符串拼接方式
            // 固定语法: string.Format("待拼接的内容",内容1,内容2,....);
            // 拼接的内容中的固定规则: {数字} 数字: 0 ~ n依次往后
            string str = string.Format("我是{0},今年{1}岁,目标是{2}","lyc", 20, "独立开发一个小游戏");
            Console.WriteLine(str);

            // 控制台打印拼接
            // 后面的 内容 比占位符多 不会报错
            // 后面的 内容 比占位符少  会报错
            Console.WriteLine("今天星期{0},天气{1}", "三", "晴");
            Console.WriteLine("今天星期{0},天气{1}", "三", "晴","紫外线弱");// ok
            // Console.WriteLine("今天星期{0},天气{1}", "三");// error
        }
    }
}

 C#入门篇_第11张图片

  • 字符串拼接方式: string.Format("待拼接的内容",内容1,内容2,....);
    • 拼接的内容中的固定规则: {数字} 数字: 0 ~ n依次往后
  • 控制台打印拼接,同上
    • 后面的 内容 比占位符多 不会报错
    •  后面的 内容 比占位符少  会报错

 混合优先级问题

using System.Security.Cryptography;

namespace game_code
{
    internal class Program
    {
        static void Main(string[] args)
        {
            bool gameOver  = false;
            int hp = 100;
            bool isDead = false;
            bool isMustOver = true;

            // false || false && true || true;
            // false || false || true;
            bool result = gameOver || hp < 0 && !isDead || isMustOver;
            Console.WriteLine(result);
        }
    }
}
  • !(逻辑非)优先级最高, &&(逻辑与)优先级高于||(逻辑或)
  • 逻辑运算符优先级 低于 算数运算符 条件运算符(逻辑非除外)

你可能感兴趣的:(C#,c#,开发语言)