##################################################

目录

C# 的方法

C# 定义方法

访问修饰符

返回值类型

方法名

参数列表

方法主体

方法名的命名规范

C# 的类和对象

面向对象编程

定义类

属性和方法

成员和字段

对象的默认值

类和对象示例代码

学生例子

项目测试

求两数和

银行开户


##################################################

C# 的方法

——————————

C# 定义方法

除了使用 .NET 提供的类的方法 我们也可以在类中添加自定义的方法
        还记得我们在 Java 中是怎样定义方法的吗? C# 的语法类似!

定义方法的语法:

访问修饰符 返回值类型 方法名(参数列表)
{// 方法主体
}

——————————

访问修饰符

我们在 Java 中接触到了访问修饰符 public/公有的
        我们在 C# 中也将接触其她的访问修饰符 例如 private/私有的

——————————

返回值类型

我们编写的方法是实现特定功能的模块 可供她人调用
        在调用完后可以返回一个值 这个返回值的数据类型就是方法的返回值类型

返回值类型可以是

int
float
double
bool
string

如果方法不返回任何值 就使用关键字

void

——————————

方法名

每个自定义方法都有一个名称 方法的名称应该有明确的含义
        这样在别人调用的时候 就能清楚的知道这个方法能实现什么功能

经典例子:

WriteLine()

这个方法我们调用了无数遍!一眼就能看出是 输出一行信息 的意思

——————————

参数列表

我们在调用方法时 可以向方法中传递参数
        这些参数就构成了参数列表
        如果没有参数就不用参数列表 括号内为空即可

参数列表中的每个参数都是通过

类型 参数名

的形式进行声明的 各个参数之间使用逗号隔开

——————————

方法主体

方法的主体部分就是这个方法实现某一特定功能的代码

自定义方法时 应该先写方法的声明 包括

访问修饰符
返回值类型
方法名
参数列表

最后再写

方法主体

——————————

方法名的命名规范

第一 见名知意 最好使用 动宾短语 表示能完成什么任务

第二 方法名一般使用帕斯卡命名法 即 Pascal 命名法
         就是组成方法名的单词直接相连 每个单词首字母大写
        例如 WriteLine()、ReadLine() 等

##################################################

C# 的类和对象

——————————

面向对象编程

还记得 Java 的类和对象吗?

类和对象的关系:

类 是 创建对象 的模板
对象 是 类 的 一个具体实例

在我们身边 每个能看到、摸到的东西 都能称之为对象

可以把类和对象比作月饼模子和月饼的关系
        使用月饼模子可以生产出不同样式的月饼 则将 月饼模子 称之为 类
        制作出各式各样的 月饼 称之为 对象

然后我们引申一下 作为一个程序猴子 软件意义上的对象是什么呢?

在面向对象的世界中 不同类型的事和物称之为对象 即一切皆对象

面向对象 的编程思想 很符合人们的思维习惯

——————————

定义类

定义类的语法:

访问修饰符 class 类名
{// 类的主体
}

——————————

属性和方法

我们在 Java 中还接触过 类中可以包含 属性、方法

属性 在 Java 中也称之为 成员变量 用来描述类的特征

方法 用来描述类的行为

C# 中类的定义同 Java 类似
        C# 中类可以包含

字段
属性
方法

每个类可以使用访问修饰符来设置类的访问权限

——————————

成员和字段

说说 成员、字段 吧

类中的

变量
方法

都叫做

类的成员

变量 叫 成员变量
方法 叫 成员方法

而其中的成员变量 也称之为 字段 !

字段用来表示与 类和对象 相关联的数据

当需要保存类的特征时 需要在类中添加字段

至于属性 在 C# 中有特殊的表示方法 这里先卖个关子 先不说!

方法就是用来标识 类的行为
        当想要类的对象实现某个功能的时候 就在类中添加相关的方法

总结一下:

字段    成员变量    即类的特征
方法    成员方法    即类的行为

——————————

对象的默认值

另外 对象 的默认值是什么呢?
        对象是引用型! 所以自然是 null
        表示空 就像

int 默认 0

double 默认 0.0

是一样的

一定要记住引用型的默认值为 null

——————————

类和对象示例代码

%%%%%

学生例子

我们写个小项目来熟悉类和对象

学生例子 VSCode code:

using System;namespace _3.类和对象_学生例子
{/*  类和对象热身 描述学生 特征、行为* *  声明两个类* 主类 = Program* 学生类 = Student*/public class Student{ /* 学生类 *//* 特征/字段 */public string name; // 学生姓名public int age; // 学生年龄/* 行为/方法 */public void Show(){ /* 输出学生信息 */Console.WriteLine("学生姓名 {0} , 学生年龄 {1} ", name, age);}}class Program{ /* 主类 */static void Main(string[] args){ /* 程序入口 */Student stu = new Student();    // 初始化 学生类/Student 类Console.Write("请输入姓名 <<< ");stu.name = Console.ReadLine();Console.Write("请输入年龄 <<< ");stu.age = int.Parse(Console.ReadLine());Console.Write("\n##################################################\n");stu.Show(); // 调用 Student.Show() 方法输出学生信息Console.ReadLine();}}
}

VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(31,24): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(33,33): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
E:\C#\Program.cs(15,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“name”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#
\C#.csproj]
请输入姓名 <<< 李恰恰
请输入年龄 <<< 13##################################################
学生姓名 李恰恰 , 学生年龄 13PS E:\C#>

虽然有很多 warning 但是不影响执行结果!

##################################################

项目测试

——————————

求两数和

需求:

定义求和类
添加两个数据成员分别保存键盘输入的两个数
再添加一个自定义方法实现两数求和的功能

VSCode code:

using System;namespace _4.小练习_求两数和
{/* 思路* * 主要是使用 int.Parse() 进行数据类型转换* 我们定义 求和类/Summation 类 有两个字段 一个方法* 值得一提的是 Summation.Show() 这个方法的占位符 第三个参数是两个操作数相加!*/public class Summation{public int Operands_1 = 0;public int Operands_2 = 0;public void Show(){Console.WriteLine("\n##################################################");Console.WriteLine("{0} + {1} = {2}", Operands_1, Operands_2, (Operands_1 + Operands_2));Console.ReadLine();}}class Program{static void Main(string[] args){Summation sum = new Summation();Console.Write("请输入操作数_1 <<< ");sum.Operands_1 = int.Parse(Console.ReadLine());Console.Write("请输入操作数_2 <<< ");sum.Operands_2 = int.Parse(Console.ReadLine());sum.Show();}}
}

VSCode demi:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(30,40): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
E:\C#\Program.cs(32,40): warning CS8604: “int int.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
请输入操作数_1 <<< 521
请输入操作数_2 <<< 1314##################################################
521 + 1314 = 1835PS E:\C#>

——————————

银行开户

这个项目对于没有接触过编程语言的人来说是有挑战难度的!

简单银行业务系统/Simple banking system

简称:

SBS

SBS 系统为银行窗口提供处理简单个人业务往来的功能

此系统将分为以下几个步骤实现银行日常个人业务处理:
首先 为用户办理开户手续 并存入金额
其次 用户输入密码 对密码进行修改
最后 办理用户 取款、存款、转账 等业务

我们将慢慢完善此系统 学一部分知识完善一部分功能模块:

输入输出
变量
运算符
条件分支
循环
方法

我们可以分析出 SBS 将实现以下功能:

开户
修改密码
存款
取款
转账
显示余额

我们可以抽象出两个类:

银行类/Bank 类
用户类/User 类

进而分析出所有 特征/字段、行为/方法

    Bank 类 字段 :
用户Bank 类 方法 :
菜单
初始化用户信息
显示所有用户
检查用户
检查用户
取款操作
存款操作
显示余额User 类 字段 :
用户名
用户密码
身份证号
账户余额
账号User 类 方法 :
存款
取款

%%%%%

需求:

模拟银行业务的开户业务

即 从控制台接收输入的 用户名、密码、身份证号、开户金额
        程序为账户指定一个固定值 例如 163729837463
        使用格式字符串输出账户的开户信息

VSCode code:

using System;namespace _5.SBS_开户业务
{/*  思路* *  创建 User 类 添加有关账户信息的资源*  创建 Bank 类并添加 开户 方法*  使用 double 类型定义存款金额 这个不用说吧? 记得使用 double.Parse() 转换从控制台接收的存款金额数*  在 Main() 中调用 Bank 类中的自定义方法实现开户*  使用* Console.WriteLine("格式字符串", 变量列表);*  这种格式输出开户信息*//// <summary>/// 银行类 /* 你会发现正式场合的 类、方法 甚至 字段、属性 都使用文档注释 这是 C# 的标准代码风格! *//// </summary>public class Bank{/* 字段暂缺* ... ...*//// <summary>/// 开户方法/// </summary>public void CreateAccount(){// 初始化string account = "163729837463";                        // 随机指定的账号User usr = new User();                                  // 实例化 usr 对象// 接收数据usr._account = account;                                 // 得到账号Console.Write("请输入用户名 <<< ");usr._name = Console.ReadLine();                         // 得到用户名Console.Write("请输入用户密码 <<< ");usr._pass = Console.ReadLine();                         // 得到用户密码Console.Write("请输入用户身份证号 <<< ");usr._identityNum = Console.ReadLine();                  // 得到用户身份证号Console.Write("请输入用户存款金额 <<< ");usr._balance = double.Parse(Console.ReadLine());        // 得到用户存款金额// 输出信息Console.WriteLine("\n账户 >>> {0}\n用户名 >>> {1}\n存款金额 >>> {2}\n\n创建成功!",usr._account, usr._name, usr._balance);Console.ReadLine();}}/// <summary>/// 账户类/// </summary>public class User{// 你会发现正式场合我都用 _变量名 这种形式 这是 C# 标准代码风格!_(:з」∠)_public string _name;    // 用户名public string _account; // 账号public string _pass;    // 用户密码public string _identityNum; // 身份证号public double _balance; // 存款余额}/// <summary>/// 主类/// </summary>class Program{/// <summary>/// Main 方法/// </summary>static void Main(string[] args){// 直接初始化银行类调用开户即可!Bank ba = new Bank();ba.CreateAccount();}}
}

VSCode demo:

Windows PowerShell
版权所有 (C) 2014 Microsoft Corporation。保留所有权利。PS E:\C#> cd "e:\C#\" ; if ($?) { dotnet run Program.cs }
E:\C#\Program.cs(58,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_name”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.csproj]E:\C#\Program.cs(59,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_account”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.cspr
oj]
E:\C#\Program.cs(60,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_pass”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.csproj]E:\C#\Program.cs(61,23): warning CS8618: 在退出构造函数时,不可为 null 的 字段“_identityNum”必须包含非 null 值。请考虑将 字段 声明为可以为 null。 [E:\C#\C#.
csproj]
E:\C#\Program.cs(37,25): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(39,25): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(41,32): warning CS8601: 可能的 null 引用赋值。 [E:\C#\C#.csproj]
E:\C#\Program.cs(43,41): warning CS8604: “double double.Parse(string s)”中的形参“s”可能传入 null 引用实参。 [E:\C#\C#.csproj]
请输入用户名 <<< CSDN
请输入用户密码 <<< 5211314
请输入用户身份证号 <<< 111111111111111111
请输入用户存款金额 <<< 9999999999999账户 >>> 163729837463
用户名 >>> CSDN
存款金额 >>> 9999999999999创建成功!PS E:\C#>

[C# 类和对象]-C# 中的方法以及类和对象编程相关推荐

  1. 史上最全讲解:JAVA中的方法 数组 类

    史上最全讲解:JAVA中的数组 方法 面向对象 文章目录 史上最全讲解:JAVA中的数组 方法 面向对象 数组 数组的定义: 数组的特点: 数组的初始化: 数组的遍历: 从前到后拿到每一个数据 方法 ...

  2. [JQuery]jQuery中serializeArray方法的使用及对象与字符串的转换

    使用jQuery中的serializeArray()方法可以方便的将表单中的各个信息,转化为多个{name:xx,value:xx}对象的数组, 再使用遍历的方式可以方便的将数组转化为json对象, ...

  3. php类实例化js,php中如何实例化一个类_后端开发

    php实现字母数字混合验证码_后端开发 js中可以通过后缀加随机数[Math.random()]来实现刷新验证码,PHP验证传过来的参数code和当前session存储的验证码进行比较,若是正确返回1 ...

  4. 类的初始化列表_【Flutter 111】Flutter手把手教程Dart语言——类、类的的成员变量和方法、类的构造函数...

    类 Dart是一种面向对象的语言,所有对象都是一个类的实例,而所有的类都继承自Object类.每个除了Object类之外的类都只有一个超类,一个类的代码可以在其它多个类继承中重复使用. 类的实例变量 ...

  5. javaweb_笔记1(系统架构;servlet分析,注册,生命周期;Servletconfig对象(四个方法)和Servletcontext对象;http协议,get,post)

    1.关于系统架构 1.1系统架构包括 C/S架构: Client/Server(客户端/服务器) 例如电脑上安装的各种软件,qq等,需要安装特定的软件 优点: 速度快(软件中数据大部分在客户端中,少量 ...

  6. java group类_浅析Java中线程组(ThreadGroup类)

    Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理.可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可以有线程组,组中还可以有线程,这样的 ...

  7. java函数ao活动对象_JavaScript中的执行上下文和变量对象

    执行上下文(Execution Context) JavaScript代码执行的过程,包括编译和执行两个阶段,编译就是通过词法分析,构建抽象抽象语法树,并编译成机器识别的指令,在JavaScript代 ...

  8. php声明一个类的关键字,php中怎么实例化一个类

    php中怎么实例化一个类 发布时间:2021-03-05 10:15:50 来源:亿速云 阅读:87 作者:小新 这篇文章主要介绍php中怎么实例化一个类,文中介绍的非常详细,具有一定的参考价值,感兴 ...

  9. Java黑皮书课后题第10章:*10.22(实现String类)Java库中提供了String类,给出你自己对下面方法的实现(将新类命名为MyString1)

    10.22(实现String类) 题目 代码:本类被命名为Test22_MyString1 题目 代码:本类被命名为Test22_MyString1 public class Test22_MyStr ...

最新文章

  1. 分布式监控系统开发【day38】:监控数据如何画图(九)
  2. synchronized(this)用法
  3. 使用游标显示销售报表_协助报表开发之 MongoDB join mysql
  4. ZooKeeper与Eureka的区别
  5. 在 Linux/UNIX 终端下使用 nload 实时监控网络流量和带宽使用
  6. bugzilla使用_如何使用Bugzilla提交错误报告
  7. struts2上传文件
  8. 可恶的Java数组下标越界检查
  9. 百度邀您来听一场云存储的大戏!
  10. 前端开发-家里蹲工作环境搭建
  11. java8 Lambda表达式的应用(函数式接口、lambda表达式,方法引用及Stream API)
  12. 「搬文工」Mac Finder 右键快速新建、复制、移动文件工具
  13. VegasMovie Studio无法安装怎么办?
  14. linux目录蓝色,前言linux系统默认目录颜色是蓝色的,在黑背景下看不清楚,可以通过以下2种方法修改ls查看的颜色。方法:1、拷贝/etc/DIR_COLORS文件为...
  15. hysys动态模拟教程_(转载)HYSYS-过程模拟软件-稳态模拟-第一部分(一)
  16. H5手写签名,适用于手机网页、电脑网页(IE9+)
  17. Qt5使用Poppler实现PDF阅读器
  18. graphpad多条不同的曲线_GraphPad Prism
  19. Java 递归实现树形菜单
  20. 办公室的吊顶方式都有哪些呢?公室装修需要注意什么细节呢?

热门文章

  1. 在阿里,如何度量研发效能?
  2. 给ImageView 添加阴影的两种方式
  3. Python3--反转链表之迭代,递归,穿针引线(头插法)
  4. C# ——SaveFileDialog
  5. python datetime timezone_Python中timezone的部分常用操作
  6. 软考 - IP地址与网络划分
  7. 应用于车辆诊断的CAN转以太网/wifi设备LCWLAN新版配置软件介绍
  8. Go语言 面试 针对初级、应届、实习
  9. ElasticSearch实战系列02 SpringBoot + ElasticSearch 7.7 实现高仿QQ用户搜索:中文+拼音混合检索,并高亮显示
  10. Python游戏开发,pygame模块,Python实现接水果和金币小游戏