欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

1-初步了解C#-语言基础

程序员文章站 2022-11-05 11:57:41
本篇博客对应视频讲解 前言 终于开始讲语言了,我选择讲C#。为什么呢?因为C#是很好的入门语言,简洁、全面,面向对象类型安全,开发体验好,上手容易。而其他的语言也已经有人讲了很多了,C#相对来说要少一些。 从官方文档开始 还记得从零开始学编程系列,我说过学习和遇到问题首先要查看官方的文档说明。所以我 ......

本篇博客对应视频讲解

前言

终于开始讲语言了,我选择讲c#。为什么呢?因为c#是很好的入门语言,简洁、全面,面向对象类型安全,开发体验好,上手容易。而其他的语言也已经有人讲了很多了,c#相对来说要少一些。

从官方文档开始

还记得从零开始学编程系列,我说过学习和遇到问题首先要查看官方的文档说明。所以我在开始本系列教程之前,也是浏览了官方文档。对于一些有经验,理解能力较强的同学来说,你跟着官方文档一步一步来学习也是可以的。我的博客文章和视频不会完全按照官方文档来,仍然会有所筛选,结合自己学习经验,把最容易理解最实用的部分优先讲出来。

首先我们打开官方的。建议大家要浏览一下指南中的内容,该内容列举了官方提供的学习内容及学习顺序。

我今天要讲的,是让大家整体了解一下c#语言,有一个整体的感观之后,之后讲解知识点也就不会那么陌生和难以理解了。

在正式开始之前,最后确认一下以下内容是否已经做到了。

  1. 指法练习是否达到及格要求。
  2. 开发工具和环境是否已经准备妥当。

指法不我说了。如果环境没有安装的话,请到官方网站或者在我们的去下载visual studio 2017。在安装选项只,我们当前只需要勾选.net core 跨平台开发(通常是最后一个)即可。 然后等待安装完成即可,不需要再进行任何设置了,你的环境已经可用了,这比其他语言便捷性上强很多

开始快速入门

今天会演示较多代码示例给大家,然后进行快速的说明,目的就是让大家提前有个直观的感受,有看不懂听不懂的地方也不需要着急,最关键的是要跟着教程,自己动手把所有的示例代码敲一遍,运行一下看看结果,如果你能举一反三,进行更多的改进,那就更好了。

以下所有代码示例都可以在github上去查看: quickstart/quickstart。 代码是为了参考对照,记得一定要自己动手写程序,不要直接复制!不要直接复制!不要直接复制!

代码即文档,更多的解释可以查看本篇博客关联的视频,视频中会更有更详细讲解!

  1. 字符串输入输出,运行程序。
	//1 字符串输出
	console.writeline("hello world!");
	//定义字符串类型变量
	string name = "niltor";
	//2 带变量输出
	console.writeline($"my name is {name}");
	//3 带格式输出
	console.writeline($@"
	hello, welcome to msdev.cc!
	my name is {name}.
	what's your name?");
	//输入字符串
	string yourname = console.readline();
	console.writeline($"hello {yourname},nice to meet you!");
  1. 字符串的简单处理。
	string url = "https://msdev.cc";
	// 判断是否包含
	if (url.contains("https"))
	{
		console.writeline("这是一个https链接");
	}
	//字符串替换
	url = url.replace("https", "ftp");
	console.writeline($"新网址:{url}");
	//判断是否以某字符开头
	if (url.startswith("ftp"))
	{
		console.writeline("这是ftp链接:" + url);
	}
  1. 数字类型的使用
	//整型计算
	int x = 4;
	int y = 17;
	int fx = 2 * (x + y);
	console.writeline(fx);

	//除法
	console.writeline($"{y} 除以 2 = {y / 2},余{y % 2}");
	double fy = y / 2.0;
	console.writeline($"{y} 除以 2.0 = {fy}");

	double fa = math.sqrt(8);
	console.writeline($"8的开方为:{fa}");

	//输入类型范围
	console.writeline($"int(整型)最大值 :{int.maxvalue} , 最小值 :{int.minvalue}");
	console.writeline($"double(整型)最大值 :{double.maxvalue} , 最小值 :{double.minvalue}");

	//计算圆的面积
	double r = 2.4;
	double area = math.pi * r * r;

	console.writeline($"半径为{r}的圆的面积为:{area},约为:{math.round(area, 3)}");
  1. 分支和循环
            //条件语句if
            int a = 1;
            if (a > 0)
            {
                console.writeline("a大于0");
            }
            else
            {
                console.writeline("a小于0");
            }

            //switch分支语句
            switch (a)
            {
                case 0:
                    console.writeline("a等于0");
                    break;
                case 1:
                    console.writeline("a大于0");
                    break;
                default:
                    console.writeline("a小于0");
                    break;
            }

            //for循环
            for (int i = 0; i < 10; i++)
            {
                console.write($"{i} ");
            }
            console.writeline();

            //foreach循环
            int[] numbers = new int[4];
            numbers[0] = 1;
            numbers[1] = 2;
            numbers[2] = 3;
            numbers[3] = 4;
            //int[] numbers = new int[] { 1,2,3,4};

            foreach (int item in numbers)
            {
                console.write(item + " ");
            }
            console.writeline();

            //while循环
            int j = 10;
            while (j > 0)
            {
                console.write(j + " ");
                j--;//i=i-1;
            }
  1. 列表和集合
			//定义list
            list<string> list = new list<string>();
            //添加值 
            list.add("black");
            list.add("white");
            list.add("orange");
            list.add("red");
            list.add("blue");

            //遍历输出
            foreach (var item in list)
            {
                console.write(item + " ");
            }
            console.writeline();

            //数列示例
            var fibonaccinumbers = new list<int> { 1, 1 };
            while (fibonaccinumbers.count < 20)
            {
                //取出最后两个值 
                var previous = fibonaccinumbers[fibonaccinumbers.count - 1];
                var previous2 = fibonaccinumbers[fibonaccinumbers.count - 2];
                //添加到列表
                fibonaccinumbers.add(previous + previous2);
            }
            //遍历输出 
            foreach (var item in fibonaccinumbers)
                console.writeline(item);
  1. 类简介 定义英雄类:
    class hero
    {
        /// <summary>
        /// 名称
        /// </summary>
        public string name { get; set; }
        /// <summary>
        /// 武器
        /// </summary>
        public string weapon { get; set; }
        /// <summary>
        /// 血量
        /// </summary>
        public int hp { get; set; }

        public hero(string name, int hp)
        {
            name = name;
            hp = hp;
            console.writeline($"{name}登场!拥有[{hp}]血量");
        }

        /// <summary>
        /// 攻击
        /// </summary>
        /// <param name="target"></param>
        public void attack(string target, int damage = 0)
        {
            console.writeline($"[{name}]使用[{weapon}]攻击了[{target}],造成了[{damage}]点伤害");
            console.writeline();
        }
    }

执行方法:

            //设置英雄库及武器库
            string[] heronames = { "钢铁侠", "蝙蝠侠", "美队", "超人" };
            string[] weapons = { "拖鞋", "拳头", "棍棒", "机枪" };

            //创建英雄队列
            var heros = new list<hero>();
            var random = new random();

            //英雄登场,配置武器
            foreach (var item in heronames)
            {
                var hero = new hero(item, random.next(60, 120));
                hero.weapon = weapons[random.next(0, 4)];

                heros.add(hero);
            }

            //大混战
            while (heros.count > 1)
            {
                var position = random.next(0, heros.count);
                var target = random.next(0, heros.count);
                if (position != target)
                {
                    int damage = random.next(16, 32);
                    heros[position].attack(heros[target].name, damage);
                    heros[target].hp = heros[target].hp - damage;

                    if (heros[target].hp < 0)
                    {
                        console.writeline(heros[target].name + "已阵亡");
                        heros.remove(heros[target]);
                    }
                }
                thread.sleep(500);
            }

            console.writeline($"最后的胜者为:[{heros[0].name}].还有[{heros[0].hp}]血量");