zoukankan      html  css  js  c++  java
  • 2初步了解C#类与对象

    本篇博客对应视频讲解

    回顾

    我们在第一篇文章中讲了编程中最基本的内容,如输入输出、字符串处理、数字类型计算、分支及循环结构等。无论学习什么语言,这些内容都是相通的。

    本篇博客主要演示列表(List)的用法以及面向对象中类的概念,通过一个具体的实例去向大家展示如何对现实对象抽象,创建类,以及如何使用它。

    理论基础

    我们可以通过官方文档中的解释先初步理解一下列表、类、对象等概念。然后我们通过实际的代码示例,通过自己动手编写去亲身体会一下。

    理解面向对象编程

    关于面向对象的编程,我们可以通过官方文档中的解释来做初步的理解。 文档中介绍了以下概念: 类和对象 继承 接口 泛型 委托

    我们当前只需要对类和对象有个初步的理解即可。点击查看完整文档

    单纯讲概念是没用的,但没有理论基础也难以形成知识体系,触类旁通。所以,建议大家先总体看一遍文档内容,脑海中有个印象,然后通过我们的视频实例和自己动手实践去亲自体会,之后再看文档的时候,也许就会理解其内容了。

    动手实践

    1. 列表List
             //定义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}]血量");
    

    以上代码是我们今天示例中的代码。我们也可以通过github上去下载完整项目代码。 建议大家同时观看视频,视频中会有更详细的说明以及操作演示。

  • 相关阅读:
    twfont
    判断数组中某个元素的个数
    vue swiper中的大坑
    this指向问题
    vue.nextTick简单的用法
    类图解析
    设计模式
    设计模式
    Http Notes
    VS Notes
  • 原文地址:https://www.cnblogs.com/msdeveloper/p/9773762.html
Copyright © 2011-2022 走看看