1-初步了解C#-语言基础
本篇博客对应视频讲解
前言
终于开始讲语言了,我选择讲c#。为什么呢?因为c#是很好的入门语言,简洁、全面,面向对象类型安全,开发体验好,上手容易。而其他的语言也已经有人讲了很多了,c#相对来说要少一些。
从官方文档开始
还记得从零开始学编程系列,我说过学习和遇到问题首先要查看官方的文档说明。所以我在开始本系列教程之前,也是浏览了官方文档。对于一些有经验,理解能力较强的同学来说,你跟着官方文档一步一步来学习也是可以的。我的博客文章和视频不会完全按照官方文档来,仍然会有所筛选,结合自己学习经验,把最容易理解最实用的部分优先讲出来。
首先我们打开官方的。建议大家要浏览一下指南中的内容,该内容列举了官方提供的学习内容及学习顺序。
我今天要讲的,是让大家整体了解一下c#语言,有一个整体的感观之后,之后讲解知识点也就不会那么陌生和难以理解了。
在正式开始之前,最后确认一下以下内容是否已经做到了。
- 指法练习是否达到及格要求。
- 开发工具和环境是否已经准备妥当。
指法不我说了。如果环境没有安装的话,请到官方网站或者在我们的去下载visual studio 2017
。在安装选项只,我们当前只需要勾选.net core 跨平台开发
(通常是最后一个)即可。 然后等待安装完成即可,不需要再进行任何设置了,你的环境已经可用了,这比其他语言便捷性上强很多。
开始快速入门
今天会演示较多代码示例给大家,然后进行快速的说明,目的就是让大家提前有个直观的感受,有看不懂听不懂的地方也不需要着急,最关键的是要跟着教程,自己动手把所有的示例代码敲一遍,运行一下看看结果,如果你能举一反三,进行更多的改进,那就更好了。
以下所有代码示例都可以在github
上去查看: quickstart/quickstart。 代码是为了参考对照,记得一定要自己动手写程序,不要直接复制!不要直接复制!不要直接复制!
代码即文档,更多的解释可以查看本篇博客关联的视频,视频中会更有更详细讲解!
- 字符串输入输出,运行程序。
//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!");
- 字符串的简单处理。
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); }
- 数字类型的使用
//整型计算 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)}");
- 分支和循环
//条件语句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; }
- 列表和集合
//定义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);
- 类简介 定义英雄类:
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}]血量");
上一篇: 基于netty实现的迷你版TOMCat
下一篇: 山东压缩煤炭产能 推动煤矿“机器换人”