本篇博客对应视频讲解

前言

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

从官方文档开始

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

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

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

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

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

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

开始快速入门

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

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

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

  1. 字符串输入输出,运行程序。
  1. //1 字符串输出
  2. Console.WriteLine("Hello World!");
  3. //定义字符串类型变量
  4. string name = "NilTor";
  5. //2 带变量输出
  6. Console.WriteLine($"My name is {name}");
  7. //3 带格式输出
  8. Console.WriteLine($@"
  9. Hello, welcome to msdev.cc!
  10. My name is {name}.
  11. What's your name?");
  12. //输入字符串
  13. string yourName = Console.ReadLine();
  14. Console.WriteLine($"Hello {yourName},nice to meet you!");
  1. 字符串的简单处理。
  1. string url = "https://msdev.cc";
  2. // 判断是否包含
  3. if (url.Contains("https"))
  4. {
  5. Console.WriteLine("这是一个https链接");
  6. }
  7. //字符串替换
  8. url = url.Replace("https", "ftp");
  9. Console.WriteLine($"新网址:{url}");
  10. //判断是否以某字符开头
  11. if (url.StartsWith("ftp"))
  12. {
  13. Console.WriteLine("这是ftp链接:" + url);
  14. }
  1. 数字类型的使用
  1. //整型计算
  2. int x = 4;
  3. int y = 17;
  4. int fx = 2 * (x + y);
  5. Console.WriteLine(fx);
  6.  
  7. //除法
  8. Console.WriteLine($"{y} 除以 2 = {y / 2},余{y % 2}");
  9. double fy = y / 2.0;
  10. Console.WriteLine($"{y} 除以 2.0 = {fy}");
  11.  
  12. double fa = Math.Sqrt(8);
  13. Console.WriteLine($"8的开方为:{fa}");
  14.  
  15. //输入类型范围
  16. Console.WriteLine($"int(整型)最大值 :{int.MaxValue} , 最小值 :{int.MinValue}");
  17. Console.WriteLine($"double(整型)最大值 :{double.MaxValue} , 最小值 :{double.MinValue}");
  18.  
  19. //计算圆的面积
  20. double r = 2.4;
  21. double area = Math.PI * r * r;
  22.  
  23. Console.WriteLine($"半径为{r}的圆的面积为:{area},约为:{Math.Round(area, 3)}");
  1. 分支和循环
  1. //条件语句if
  2. int a = 1;
  3. if (a > 0)
  4. {
  5. Console.WriteLine("a大于0");
  6. }
  7. else
  8. {
  9. Console.WriteLine("a小于0");
  10. }
  11.  
  12. //switch分支语句
  13. switch (a)
  14. {
  15. case 0:
  16. Console.WriteLine("a等于0");
  17. break;
  18. case 1:
  19. Console.WriteLine("a大于0");
  20. break;
  21. default:
  22. Console.WriteLine("a小于0");
  23. break;
  24. }
  25.  
  26. //for循环
  27. for (int i = 0; i < 10; i++)
  28. {
  29. Console.Write($"{i} ");
  30. }
  31. Console.WriteLine();
  32.  
  33. //foreach循环
  34. int[] numbers = new int[4];
  35. numbers[0] = 1;
  36. numbers[1] = 2;
  37. numbers[2] = 3;
  38. numbers[3] = 4;
  39. //int[] numbers = new int[] { 1,2,3,4};
  40.  
  41. foreach (int item in numbers)
  42. {
  43. Console.Write(item + " ");
  44. }
  45. Console.WriteLine();
  46.  
  47. //while循环
  48. int j = 10;
  49. while (j > 0)
  50. {
  51. Console.Write(j + " ");
  52. j--;//i=i-1;
  53. }
  1. 列表和集合
  1. //定义List
  2. List<string> list = new List<string>();
  3. //添加值
  4. list.Add("Black");
  5. list.Add("White");
  6. list.Add("Orange");
  7. list.Add("Red");
  8. list.Add("Blue");
  9.  
  10. //遍历输出
  11. foreach (var item in list)
  12. {
  13. Console.Write(item + " ");
  14. }
  15. Console.WriteLine();
  16.  
  17. //数列示例
  18. var fibonacciNumbers = new List<int> { 1, 1 };
  19. while (fibonacciNumbers.Count < 20)
  20. {
  21. //取出最后两个值
  22. var previous = fibonacciNumbers[fibonacciNumbers.Count - 1];
  23. var previous2 = fibonacciNumbers[fibonacciNumbers.Count - 2];
  24. //添加到列表
  25. fibonacciNumbers.Add(previous + previous2);
  26. }
  27. //遍历输出
  28. foreach (var item in fibonacciNumbers)
  29. Console.WriteLine(item);
  1. 类简介 定义英雄类:
  1. class Hero
  2. {
  3. /// <summary>
  4. /// 名称
  5. /// </summary>
  6. public string Name { get; set; }
  7. /// <summary>
  8. /// 武器
  9. /// </summary>
  10. public string Weapon { get; set; }
  11. /// <summary>
  12. /// 血量
  13. /// </summary>
  14. public int HP { get; set; }
  15.  
  16. public Hero(string name, int Hp)
  17. {
  18. Name = name;
  19. HP = Hp;
  20. Console.WriteLine($"{name}登场!拥有[{Hp}]血量");
  21. }
  22.  
  23. /// <summary>
  24. /// 攻击
  25. /// </summary>
  26. /// <param name="target"></param>
  27. public void Attack(string target, int damage = 0)
  28. {
  29. Console.WriteLine($"[{Name}]使用[{Weapon}]攻击了[{target}],造成了[{damage}]点伤害");
  30. Console.WriteLine();
  31. }
  32. }

执行方法:

  1. //设置英雄库及武器库
  2. string[] heroNames = { "钢铁侠", "蝙蝠侠", "美队", "超人" };
  3. string[] weapons = { "拖鞋", "拳头", "棍棒", "机枪" };
  4.  
  5. //创建英雄队列
  6. var heros = new List<Hero>();
  7. var random = new Random();
  8.  
  9. //英雄登场,配置武器
  10. foreach (var item in heroNames)
  11. {
  12. var hero = new Hero(item, random.Next(60, 120));
  13. hero.Weapon = weapons[random.Next(0, 4)];
  14.  
  15. heros.Add(hero);
  16. }
  17.  
  18. //大混战
  19. while (heros.Count > 1)
  20. {
  21. var position = random.Next(0, heros.Count);
  22. var target = random.Next(0, heros.Count);
  23. if (position != target)
  24. {
  25. int damage = random.Next(16, 32);
  26. heros[position].Attack(heros[target].Name, damage);
  27. heros[target].HP = heros[target].HP - damage;
  28.  
  29. if (heros[target].HP < 0)
  30. {
  31. Console.WriteLine(heros[target].Name + "已阵亡");
  32. heros.Remove(heros[target]);
  33. }
  34. }
  35. Thread.Sleep(500);
  36. }
  37.  
  38. Console.WriteLine($"最后的胜者为:[{heros[0].Name}].还有[{heros[0].HP}]血量");

1-初步了解C#-语言基础的更多相关文章

  1. 我的学习目标(目前已初步学习完Java语言基础)

    操作系统.尤其是内存/线程/进程方面 计算机网络协议,重点关注 TCP/UDP/HTTP. 数据结构与算法. 数据库 设计模式,熟练掌握常用的几种设计模式. Java语言基础.熟悉java语言基础,了 ...

  2. 【quick-cocos2d-x】Lua 语言基础

    版权声明:本文为博主原创文章,转载请注明出处. 使用quick-x开发游戏有两年时间了,quick-x是cocos2d-Lua的一个豪华升级版的框架,使用Lua编程.相比于C++,lua的开发确实快速 ...

  3. 基于Spark和SparkSQL的NetFlow流量的初步分析——scala语言

    基于Spark和SparkSQL的NetFlow流量的初步分析--scala语言 标签: NetFlow Spark SparkSQL 本文主要是介绍如何使用Spark做一些简单的NetFlow数据的 ...

  4. 20165234 预备作业2 学习基础和C语言基础调查

    学习基础和C语言基础调查 一.技能学习经验及体会 你有什么技能比大多人(超过90%以上)更好? 看到这个问题,我仔细想了想,好像的确没有什么特别出众的技能,但是我想到了许多我个人的爱好. 我从小喜欢五 ...

  5. 20165317 学习基础和C语言基础调查

    学习基础和C语言基础调查 关于优势技能 说来惭愧,读书多年,爱好不少,但是真的能拿的出手的.能被叫做特长的不多.至今,能在同龄人中处于较领先位置的也只有从四年级开始练起的乒乓球.记得开始练习乒乓球是从 ...

  6. 20165326 学习基础和c语言基础调查

    学习基础和c语言基础调查 一.关于个人技能 阅读了娄老师关于做中学的文章,我想起了自己之前学习技能的经历. 从小到大我学过的东西不少,除学校的教育课程外,我还参加过各种兴趣班,书法.绘画.舞蹈.吉他. ...

  7. 20165332 学习基础和C语言基础调查

    学习基础和c语言基础调查 一.技能学习经验 从小学过很多东西,架子鼓.电子琴.街舞.吉他.书法.美术......爱好也有很多,乒乓球.篮球.唱歌......这么多项技能,要说那一项比大多数人好,还真的 ...

  8. Arduino学习笔记② Arduino语言基础

    授人以鱼不如授人以渔,目的不是为了教会你具体项目开发,而是学会学习的能力.希望大家分享给你周边需要的朋友或者同学,说不定大神成长之路有博哥的奠基石... QQ技术互动交流群:ESP8266&3 ...

  9. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(下)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 五.透视.逆透视及分组 5.1 透视 所谓透视( ...

  10. 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    索引: 一.SQL Server的体系结构 二.查询 三.表表达式 四.集合运算 五.透视.逆透视及分组 六.数据修改 七.事务和并发 八.可编程对象 一.SQL Server体系结构 1.1 数据库 ...

随机推荐

  1. 1.1_C语言概述

    C语言概述 1.1 什么是C语言 一提到语言这个词语,自然会想到的是像英语.汉语等这样的自然语言,因为它是人和人交换信息不可缺少的工具. 而今天计算机遍布了我们生活的每一个角落,除了人和人的相互交流之 ...

  2. 263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number

    ▶ 三个与丑数相关的问题 ▶ 第 263题,判定一个数字是否是丑数,即其素因子是否仅由 2,3,5 构成. ● 常规消除判别,4 ms class Solution { public: bool is ...

  3. leetcode88

    public class Solution { public void Merge(int[] nums1, int m, int[] nums2, int n) { //for (int i = 0 ...

  4. oracle执行sql文件

    oracle执行sql文件 在PL/SQL中直接用command window执行就可以了: PL/SQL developer----->File------>New---->com ...

  5. Windows 2008配置iis+Php+Mysql

    windows 2008 与 windows 2003 区别在于前者是iis7,后者是iis6.两个系统下配置Iis+Php+Mysql+Zend Optimizer+GD库+Phpmyadmin基本 ...

  6. 听说去了BAT的 Linuxers 都做过这套面试题!

    本部分为单项选择题,每道题仅有一个答案,每题2分.   1. cron 后台常驻程序 (daemon) 用于: A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和错误 D. ...

  7. FP昨天的新单,今天交期回写到2020年

    昨天新单6900000053,回写交期到2020年.在此视图查看此单回写的日期V_OUT_SHIPMENT_PLAN_TESTS,可看到日期是2020年. 1.检查OUT_SHIPMENT_PLAN表 ...

  8. 转载《spring定时任务轮询(spring Task)》

    亲测可用 原文网址:http://blog.csdn.net/wanglha/article/details/51026697 本博主注:xmlns:task="http://www.spr ...

  9. 命令: go build

    命令: go build 参考: https://studygolang.com/articles/9463 go help build 构建编译由导入路径命名的包,以及它们的依赖关系,但它不会安装结 ...

  10. [转]TCP的拥塞控制

    1.引言 计算机网络中的带宽.交换结点中的缓存和处理机等,都是网络的资源.在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络的性能就会变坏.这种情况就叫做拥塞. 拥塞控制就是防止 ...