文章目录

  • 1 引入例子
  • 2 创建类
    • 2.1 类的访问属性
    • 2.2 英雄 特点类
    • 2.3 英雄信息打印
  • 3 静态变量static
  • 4 类 调用 类
    • 4.1 非静态 成员函数
    • 4.2 静态 成员函数

1 引入例子

比如游戏中 描述英雄的角色,

我们可以像下面这样,给每一个英雄特点及拥有技能分别定义变量;
(看起来有多又杂,还容易西出错)

using System;
//类型
//关键字
class Program
{static void Main(){Console.WriteLine("月黑风高杀人夜");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("微风吹动着路边的小草");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("隐约在路的尽头有一个人影");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("走近一看,这人叫"); string name1 = Console.ReadLine();Console.WriteLine("原来你就是"+ name1);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();string xingbie1 = "男";int nianling1 = 18;int shanghai1 = 100;int xueliang1 = 100;int shengao1 = 175;string jineng1 = "飞檐走壁"; int jineng1shanghai = 20;string jineng2 = "飞沙走右";int jineng2shanghai = 30;Console.WriteLine("性别: " + xingbie1);Console.WriteLine("年龄: " + nianling1);Console.WriteLine("基础伤害: " + shanghai1);Console.WriteLine("基础血量: " + xueliang1);Console.WriteLine("身高:" + shengao1);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1伤害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2伤害: " + jineng2shanghai);Console.ReadKey();Console.WriteLine("此时远处传来一个女人的声音");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走进一看原来是: ");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("请输入女侠的名称: ");string name11 = Console.ReadLine();Console.WriteLine("原来你就是" + name11);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();string xingbie11 = "女";int nianling11 = 18;int shanghai11 = 100;int xueliang11 = 100;int shengao11 = 165;string jineng11 = "飞檐走壁2.0";int jineng11shanghai = 40;string jineng22 = "飞沙走右2.0";int jineng22shanghai = 60;Console.WriteLine("性别: " + xingbie11);Console.WriteLine("年龄: " + nianling11);Console.WriteLine("基础伤害: " + shanghai11);Console.WriteLine("基础血量: " + xueliang11);Console.WriteLine("身高:" + shengao11);Console.WriteLine("技能1:" + jineng11);Console.WriteLine("技能1伤害: " + jineng11shanghai);Console.WriteLine("技能2:" + jineng22);Console.WriteLine("技能2伤害: " + jineng22shanghai);Console.ReadKey();}
}

在这里插入图片描述

2 创建类

创建一个Hero类

2.1 类的访问属性

class Hero
{string name;string xingbie;int nianling;int shanghai;int xueliang;int shengao;string jineng1;int jineng1shanghai;string jineng2;int jineng2shanghai;
}

实例化 对象,hr,但是hr.访问不到 类变量,因为 class默认是 private
在这里插入图片描述
如果像 C++那样写 就会报错;
在这里插入图片描述

2.2 英雄 特点类

class Hero
{public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}

完整代码

using System;
//类型
//关键字
class Program
{static void Main(){Console.WriteLine("月黑风高杀人夜");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("微风吹动着路边的小草");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("隐约在路的尽头有一个人影");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("走近一看,这人叫");//实例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原来你就是"+ hr1.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飞檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飞沙走右";hr1.jineng2shanghai = 30;Console.WriteLine("性别: " + hr1.xingbie);Console.WriteLine("年龄: " + hr1.nianling);Console.WriteLine("基础伤害: " + hr1.shanghai);Console.WriteLine("基础血量: " + hr1.xueliang);Console.WriteLine("身高:" + hr1.shengao);Console.WriteLine("技能1:" + hr1.jineng1);Console.WriteLine("技能1伤害: " + hr1.jineng1shanghai);Console.WriteLine("技能2:" + hr1.jineng2);Console.WriteLine("技能2伤害: " + hr1.jineng2shanghai);Console.ReadKey();Console.WriteLine("此时远处传来一个女人的声音");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走进一看原来是: ");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("请输入女侠的名称: ");//实例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr2.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai= 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飞檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飞沙走右2.0";hr2.jineng2shanghai = 60;Console.WriteLine("性别: " + hr2.xingbie);Console.WriteLine("年龄: " + hr2.nianling);Console.WriteLine("基础伤害: " + hr2.shanghai);Console.WriteLine("基础血量: " + hr2.xueliang);Console.WriteLine("身高:" + hr2.shengao);Console.WriteLine("技能1:" + hr2.jineng1);Console.WriteLine("技能1伤害: " + hr2.jineng1shanghai);Console.WriteLine("技能2:" + hr2.jineng2);Console.WriteLine("技能2伤害: " + hr2.jineng2shanghai);Console.ReadKey();}
}class Hero
{public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}

在这里插入图片描述

2.3 英雄信息打印

将输出 打印信息,封装到类里面

class Hero
{//成员变量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;//成员函数public void ShowInfo(){Console.WriteLine("性别: " + xingbie);Console.WriteLine("年龄: " + nianling);Console.WriteLine("基础伤害: " + shanghai);Console.WriteLine("基础血量: " + xueliang);Console.WriteLine("身高:" + shengao);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1伤害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2伤害: " + jineng2shanghai);}
}

完整代码

using System;
//类型
//关键字
class Program
{static void Main(){Console.WriteLine("月黑风高杀人夜");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("微风吹动着路边的小草");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隐约在路的尽头有一个人影");Console.WriteLine("(请按任意键继续。。。)"); Console.ReadKey();Console.WriteLine("走近一看,这人叫");//实例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原来你就是"+ hr1.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飞檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飞沙走右";hr1.jineng2shanghai = 30;//打印英雄信息hr1.ShowInfo();Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此时远处传来一个女人的声音");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走进一看原来是: ");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("请输入女侠的名称: ");//实例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr2.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai= 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飞檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飞沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息hr2.ShowInfo();Console.ReadKey();}
}class Hero
{//成员变量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;//成员函数public void ShowInfo(){Console.WriteLine("性别: " + xingbie);Console.WriteLine("年龄: " + nianling);Console.WriteLine("基础伤害: " + shanghai);Console.WriteLine("基础血量: " + xueliang);Console.WriteLine("身高:" + shengao);Console.WriteLine("技能1:" + jineng1);Console.WriteLine("技能1伤害: " + jineng1shanghai);Console.WriteLine("技能2:" + jineng2);Console.WriteLine("技能2伤害: " + jineng2shanghai);}
}

在这里插入图片描述

3 静态变量static

  • static变量可以直接被 Hero.调用,
  • 而非静态变量,需要实例化之后才可以调用
class Hero
{//static变量可以直接被 Hero.调用,而不用实例化static public string str1 = "月黑风高杀人夜";static public string str2 = "请按任意键继续。。。";public string name;//static函数只能访问static变量;static public void fun(){Console.WriteLine(str1);Console.WriteLine(str2);//Console.WriteLine(name);//非静态变量  报错}
}    

在这里插入图片描述
//static变量可以直接被 Hero.调用,而不用实例化
在这里插入图片描述

using System;
//类型
//关键字
class Program
{static void Main(){Hero.str1 = "微风吹动着路边的小草";Hero.str2 = "隐约在路的尽头有一个人影";Hero.fun();}
}class Hero
{//static变量可以直接被 Hero.调用,而不用实例化static public string str1 = "月黑风高杀人夜";static public string str2 = "请按任意键继续。。。";public string name;//static函数只能访问static变量;static public void fun(){Console.WriteLine(str1);Console.WriteLine(str2);//Console.WriteLine(name);//非静态变量  报错}
}

4 类 调用 类

ShowInfo可以单独写一个类,Hero类ShowInfo类 分开;

将Hero类作为参数传给 ShowInfo类的成员函数,以便于打印信息,

class Hero
{//成员变量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}

4.1 非静态 成员函数

将Hero类作为参数传给 ShowInfo类的成员函数,以便于打印信息,

class ShowInfo
{
//将Hero类,作为参数传给 ShowInfo类的成员函数,以便于打印信息,public void ShowHeroInfo(Hero hero){Console.WriteLine("性别: " + hero.xingbie);Console.WriteLine("年龄: " + hero.nianling);Console.WriteLine("基础伤害: " + hero.shanghai);Console.WriteLine("基础血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1伤害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2伤害: " + hero.jineng2shanghai);}
}

在这里插入图片描述

     //打印英雄信息ShowInfo show = new ShowInfo();show.ShowHeroInfo(hr1);

在这里插入图片描述

4.2 静态 成员函数

因为 Hero类涉及不同 英雄,实例化不同对象,需要使用非静态成员;
而ShowInfo只是显示信息,不需要区别对待,故而可以用 静态成员函数直接调用

class ShowInfo
{//将Hero类,作为参数传给 ShowInfo类的成员函数,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性别: " + hero.xingbie);Console.WriteLine("年龄: " + hero.nianling);Console.WriteLine("基础伤害: " + hero.shanghai);Console.WriteLine("基础血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1伤害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2伤害: " + hero.jineng2shanghai);}
}

当 成员函数 ShowHeroInfo(Hero hero)改为 静态后,调用处出错(需要做相应修改)
在这里插入图片描述

        //打印英雄信息ShowInfo.ShowHeroInfo(hr1);

在这里插入图片描述
完整代码

using System;
//类型
//关键字
class Program
{static void Main(){Console.WriteLine("月黑风高杀人夜");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("微风吹动着路边的小草");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();////----------英雄一---------------------/////Console.WriteLine("隐约在路的尽头有一个人影");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走近一看,这人叫");//实例化Hero hr1 = new Hero();hr1.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr1.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr1.xingbie = "男";hr1.nianling = 18;hr1.shanghai = 100;hr1.xueliang = 100;hr1.shengao = 175;hr1.jineng1 = "飞檐走壁";hr1.jineng1shanghai = 20;hr1.jineng2 = "飞沙走右";hr1.jineng2shanghai = 30;//打印英雄信息ShowInfo.ShowHeroInfo(hr1);Console.ReadKey();////----------英雄二---------------------/////Console.WriteLine("此时远处传来一个女人的声音");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("走进一看原来是: ");Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();Console.WriteLine("请输入女侠的名称: ");//实例化Hero hr2 = new Hero();hr2.name = Console.ReadLine();Console.WriteLine("原来你就是" + hr2.name);Console.WriteLine("(请按任意键继续。。。)");Console.ReadKey();hr2.xingbie = "女";hr2.nianling = 18;hr2.shanghai = 100;hr2.xueliang = 100;hr2.shengao = 165;hr2.jineng1 = "飞檐走壁2.0";hr2.jineng1shanghai = 40;hr2.jineng2 = "飞沙走右2.0";hr2.jineng2shanghai = 60;//打印英雄信息ShowInfo.ShowHeroInfo(hr2);Console.ReadKey();}
}class Hero
{//成员变量public string name;public string xingbie;public int nianling;public int shanghai;public int xueliang;public int shengao;public string jineng1;public int jineng1shanghai;public string jineng2;public int jineng2shanghai;
}
class ShowInfo
{//将Hero类,作为参数传给 ShowInfo类的成员函数,以便于打印信息,public static void ShowHeroInfo(Hero hero){Console.WriteLine("性别: " + hero.xingbie);Console.WriteLine("年龄: " + hero.nianling);Console.WriteLine("基础伤害: " + hero.shanghai);Console.WriteLine("基础血量: " + hero.xueliang);Console.WriteLine("身高:" + hero.shengao);Console.WriteLine("技能1:" + hero.jineng1);Console.WriteLine("技能1伤害: " + hero.jineng1shanghai);Console.WriteLine("技能2:" + hero.jineng2);Console.WriteLine("技能2伤害: " + hero.jineng2shanghai);}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916554.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916554.shtml
英文地址,请注明出处:http://en.pswp.cn/news/916554.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

单片机的硬件结构

单片机的硬件结构 一、课程导入 在上一节课《认识单片机》中,我们知道单片机就像一个超级迷你的工厂,有着类似工厂的各个组成部分。而这个 “迷你工厂” 能正常运转,离不开其内部严谨的硬件结构。就像一座大厦,只有基础结构稳固且…

multiprocessing模块使用方法(二)

spawn_main是Python multiprocessing模块的核心内部函数,用于实现spawn启动方法的子进程初始化。以下结合代码Demo详细说明其使用方法和推荐场景。一、spawn_main的功能与定位核心作用: 在spawn模式下启动子进程,负责进程间通信管道的建立和资…

编程与数学 03-002 计算机网络 07_路由算法

编程与数学 03-002 计算机网络 07_路由算法一、静态路由算法(一)手工配置路由表的方法(二)静态路由的优缺点二、动态路由算法原理(一)距离矢量算法(如贝尔曼 - 福特算法)&#xff08…

使用Python,OpenCV计算跑图的图像彩色度

使用Python,OpenCV计算跑图的图像彩色度 这篇博客将介绍如何计算跑图里最鲜艳的top25图片和最灰暗的top25图片并显示色彩彩色度值展示。 效果图 以下分别是最鲜艳top25和最灰暗top25对比效果图: 最鲜艳top25效果图: 最灰暗top25效果图…

LeetCode 60:排列序列

LeetCode 60:排列序列问题定义与核心挑战 给定整数 n 和 k,返回集合 {1,2,...,n} 的第 k 个字典序排列。直接生成所有排列再遍历到第 k 个的方法(时间复杂度 O(n!))会因 n≥10 时阶乘爆炸而超时,因此需要 数学推导 贪…

亚远景-传统功能安全VS AI安全:ISO 8800填补的标准空白与实施难点

一、为什么需要ISO 8800:传统安全标准的“盲区”传统功能安全(ISO 26262)• 假设:系统行为可被完整规格化,失效模式可枚举,风险可用概率-危害矩阵量化。• 盲区:对“设计意图正确,但…

菜鸟教程 R语言基础运算 注释 和数据类型

菜鸟教程 R语言基础运算 注释 和数据类型 1.注释 注释主要用于一段代码的解析,可以让阅读者更易理解,编程语言的注释会被编译器忽略掉,且不会影响代码的执行。 一般编程语言的注释分为单行注释与多行注释,但是 R 语言只支持单行注…

华为云ELB(弹性负载均衡)持续报异常

华为云ELB(弹性负载均衡)持续报异常,需结合实例类型(共享型/独享型)和异常代码进行针对性排查。以下是分步排查建议:一、根据实例类型排查网络配置共享型实例 安全组规则:检查后端服务器安全组是…

《R for Data Science (2e)》免费中文翻译 (第2章) --- Workflow: basics

写在前面 本系列推文为《R for Data Science (2)》的中文翻译版本。所有内容都通过开源免费的方式上传至Github,欢迎大家参与贡献,详细信息见: Books-zh-cn 项目介绍: Books-zh-cn:开源免费的中文书籍社区 r4ds-zh-cn …

开源深度学习新宠:Burn框架助您无忧高效建模

在日新月异的人工智能世界里,各类深度学习框架如雨后春笋般涌现,而Burn,作为新一代的深度学习框架,以其不妥协的灵活性、高效性和可移植性崭露头角。本文将深入探讨Burn的核心功能、应用场景及具体使用方法,帮助您更好…

基于深度学习的图像分割:使用DeepLabv3实现高效分割

前言 图像分割是计算机视觉领域中的一个重要任务,其目标是将图像中的每个像素分配到不同的类别中。近年来,深度学习技术,尤其是卷积神经网络(CNN),在图像分割任务中取得了显著的进展。DeepLabv3是一种高效的…

如何高效合并音视频文件(时间短消耗资源少)(二)

英语字幕 1 00:00:06,480 --> 00:00:08,400 Good morning. We have a banger for you2 00:00:08,400 --> 00:00:09,840 today. We're going to launch chatbt3 00:00:09,840 --> 00:00:11,519 agent. But before jumping into that, I'd4 00…

内网后渗透攻击过程(实验环境)--4、权限维持(2)

用途限制声明,本文仅用于网络安全技术研究、教育与知识分享。文中涉及的渗透测试方法与工具,严禁用于未经授权的网络攻击、数据窃取或任何违法活动。任何因不当使用本文内容导致的法律后果,作者及发布平台不承担任何责任。渗透测试涉及复杂技…

CentOS 9 配置国内 YUM 源

1.备份 sudo mv /etc/yum.repos.d/centos.repo /etc/yum.repos.d/centos.repo.backup sudo mv /etc/yum.repos.d/centos-addons.repo /etc/yum.repos.d/centos-addons.repo.backup2.创建新文件 vi /etc/yum.repos.d/centos.repo[baseos] nameCentOS Stream $releasever - BaseO…

【算法】递归、搜索与回溯算法入门

文章目录递归什么是递归为什么会用到递归如何理解递归如何写好一个递归搜索 vs 深度优先遍历 vs 深度优先搜索 vs 宽度(广度)优先遍历 vs 宽度(广度)优先搜索 vs 暴搜深度优先遍历 vs 深度优先搜索(dfs)宽度…

借助Aspose.HTML控件,在 Python 中将 SVG 转换为 PDF

您可能会发现许多解决方案都提供以编程方式将SVG转换为PDF 的功能。但这篇博文将介绍一个功能强大的 SDK,供 Python 开发人员自动化文件转换和操作。本指南将重点介绍通过 .NET 实现 Python 的 Aspose.HTML。此外,我们将逐步讲解相关步骤和代码片段&…

高级06-Java网络编程:从Socket到HTTP

引言:Java 网络编程的重要性 随着互联网技术的飞速发展,网络编程已成为现代软件开发中不可或缺的一部分。Java 作为一种广泛应用于企业级开发和分布式系统的编程语言,提供了强大的网络通信支持。从底层的 Socket 编程到高层的 HTTP 协议处理&…

STM32的蓝牙通讯(HAL库)

蓝牙基础知识(了解即可):1.是一种利用低功率无线电,支持设备短距离通信的无线电技术,能在包括移动电话、PDAQ、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换,蓝牙工作在全球通用的2.4 GH…

方案B,version1

我们重新设计起步阶段的步骤,目标是:通过运行PowerShell脚本和配置GitHub Actions工作流(deploy.yml)来实现自动化部署。 要求: 用私有仓库(my-website-source-SSH)存储源码。 通过GitHub Actions自动构建(这里只是简单的Hello World,所以构建步骤可以简化为复制文件…

Linux --- 进程

一、进程概念 在 Linux 系统中,​​进程(Process)​​ 是程序执行的动态实例,是操作系统进行资源分配和调度的基本单位。 ​​1. 程序 vs 进程​​ ​​程序(Program)​​:是静态的代码集合&…