本篇博客对应视频讲解

前言

终于开始讲语言了,我选择讲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}]血量");

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. vuex语法精简(方便开发查阅)

    vuex语法精简(方便开发查阅) store结构 state Getter Mutation actions vuex语法精简(方便开发查阅) 本文只是方便开发的时候快速查阅到相关语法,想看详细内容请 ...

  2. canvas填充规则

    canvas填充规则 const canvas = document.getElementById('canvas'); const ctx = canvas.getContext('2d'); ct ...

  3. 关于python-生成HTMLTestRunner测试报告

    一.HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告. 1.首先要下 HTMLTestRunner.py 文件,将下载的文件 ...

  4. OpenMP 旅行商问题,静态调度

    ▶ <并行程序设计导论>第六章中讨论了旅行商,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 OpenMP 的代码,分为静态调度(每个线程分分配等量的搜索人物)和动 ...

  5. MPI 集合通信函数 MPI_Scatterv(),MPI_Gatherv(),MPI_Allgatherv(),MPI_Alltoall(),MPI_Alltoallv(),MPI_Alltoallw()

    ▶ 函数 MPI_Scatterv() 和 MPI_Gatherv() .注意到函数 MPI_Scatter() 和 MPI_Gather() 只能向每个进程发送或接受相同个数的元素,如果希望各进程获 ...

  6. MPI 派生数据类型 MPI_Type_create_struct(),MPI_Type_contiguous(),MPI_Type_vector(),MPI_Type_create_hvector(),MPI_Type_indexed()

    ▶ 使用 MPI 派生数据类型,减少数据在传输过程中的耗时 ● MPI_Type_create_struct() 范例代码 { ; int globalDataInt[globalSize], glo ...

  7. YII 自带验证码实现

    共三步,分别controllers,models,views各一层添置一行代码即可实现 第一步在controllers添加 public function actions() { return arr ...

  8. 用JDK自带的包来解析XML文件(DOM+xpath)

    DOM编程不要其它的依赖包,因为JDK里自带的JDK里含有的上面提到的org.w3c.dom.org.xml.sax 和javax.xml.parsers包就可以满意条件了.(1)org.w3c.do ...

  9. 新手C#异常的学习2018.08.07

    异常是在程序执行期间出现的问题.C# 中的异常是对程序运行时出现的特殊情况的一种响应,比如尝试除以零. class Program { static void Main(string[] args) ...

  10. nasm 与 masm语法区别

    看到一篇文章,是介绍nasm语法的:http://blog.csdn.net/hitop0609/article/details/4329454 masm是微软专门为windows下汇编而写的,而na ...