本篇博客对应视频讲解

前言

终于开始讲语言了,我选择讲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. django2.0表的ORM字段类型和展示

    django2.0表的ORM字段类型和展示 思路整理 今天想给博客的文章添加增加一个分类字段 但是不知道这种后台字段生成的字段,样式怎么处理 后来找到了,就是在定义模型的字段定义的时候 决定样式 mo ...

  2. 【python 】Requests 库学习笔记

    概览 实例引入 import requests response = requests.get('https://www.baidu.com/') print(type(response)) prin ...

  3. Shader.WarmupAllShaders

    [Shader.WarmupAllShaders]

  4. 关于mybatis框架的总结【转载】

    原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...

  5. vnc安装

    安装命令:yum install tigervnc-server 一.启动VNC服务 输入命令 vncserver ps -ef|grep Xvnc vncserver -geometry 800x6 ...

  6. Vue.js基础知识

    <!DOCTYPE html> <html lang="en" xmlns:v-bind="http://www.w3.org/1999/xhtml&q ...

  7. sqlserver select 查询字段if判断用法

    SELECT TOP 1000 [id],      case when group_id>1 then 'vip'           else '普通会员'           end  F ...

  8. XAMPP非本地访问被拒绝解决办法

    问题场景: 本机搭建一个apache服务器,正常访问XAMPP目录下的页面. 手机接入同一wifi,以电脑ip方式访问该目录下的页面:提示:Access Denied Access to the re ...

  9. DataStage 一、安装

    安装的详细信息记录于文档中,文档下载地址:http://pan.baidu.com/s/1pJCF9uN 密码: y2ry ;文档内容目录如下: DataStage 一.介绍和安装.......... ...

  10. typedef char int8; 这样定义的好处?

    用typedef定义int8代表char:然后用int8去定义其他变量.一旦系统中char不再是占8位的数据时,可重新typedef新的占8位的类型为int8,而所有的用int8定义的8为类型数不用再 ...