C# 面向对象编程解析:优势、类和对象、类成员详解

本文涉及的产品
应用实时监控服务-可观测链路OpenTelemetry版,每月50GB免费额度
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
可观测可视化 Grafana 版,10个用户账号 1个月
简介: OOP代表面向对象编程。过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。面向对象编程相对于过程式编程具有几个优势:OOP执行速度更快,更容易执行OOP为程序提供了清晰的结构OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试OOP使得能够创建完全可重用的应用程序,编写更少的代码并减少开发时间提示:"不要重复自己"(DRY)原则是有关减少代码重复的原则。应该提取出应用程序中常见的代码,并将其放置在单一位置并重复使用,而不是重复编写。

C# - 什么是面向对象编程?

OOP代表面向对象编程。

过程式编程涉及编写执行数据操作的过程或方法,而面向对象编程涉及创建包含数据和方法的对象。

面向对象编程相对于过程式编程具有几个优势:

  • OOP执行速度更快,更容易执行
  • OOP为程序提供了清晰的结构
  • OOP有助于保持C#代码DRY("不要重复自己"),并使代码更易于维护、修改和调试
  • OOP使得能够创建完全可重用的应用程序,编写更少的代码并减少开发时间

提示:"不要重复自己"(DRY)原则是有关减少代码重复的原则。应该提取出应用程序中常见的代码,并将其放置在单一位置并重复使用,而不是重复编写。

C# - 什么是类和对象?

类和对象是面向对象编程的两个主要方面。

看一下以下插图,看看类和对象之间的区别:

Fruit(水果)

对象

Apple(苹果)

Banana(香蕉)

Mango(芒果)

另一个例子:

Car(汽车)

对象

Volvo(沃尔沃)

Audi(奥迪)

Toyota(丰田)

因此,类是对象的模板,而对象是类的实例。

当创建单个对象时,它们继承自类的所有变量和方法。

C# 类和对象

在C#中,一切都与类和对象以及它们的属性和方法相关。例如,在现实生活中,汽车是一个对象。汽车具有属性,例如重量和颜色,以及方法,例如驾驶和刹车。

创建一个类

要创建一个类,请使用 class 关键字:

创建一个名为 "Car" 的类,并带有一个颜色变量:

class Car 
{
   
  string color = "red";
}

当变量直接在类中声明时,通常被称为字段(或属性)。

虽然不是必需的,但是当命名类时以大写字母开头是一个良好的做法。此外,C#文件的名称通常与类的名称匹配,这样使得我们的代码更有组织性。但这不是必需的(就像在Java中一样)。

创建一个对象

对象是从类创建的。我们已经创建了一个名为 Car 的类,现在我们可以使用它来创建对象。

要创建 Car 的对象,请指定类名,后跟对象名,并使用关键字 new

class Car 
{
   
  string color = "red";

  static void Main(string[] args)
  {
   
    Car myObj = new Car();
    Console.WriteLine(myObj.color);
  }
}

请注意,我们使用点语法(.)来访问类内的变量/字段(myObj.color

C# 多个类和对象

多个对象

您可以创建一个类的多个对象:

class Car
{
   
  string color = "red";
  static void Main(string[] args)
  {
   
    Car myObj1 = new Car();
    Car myObj2 = new Car();
    Console.WriteLine(myObj1.color);
    Console.WriteLine(myObj2.color);
  }
}

使用多个类

您还可以在另一个类中创建一个类的对象并访问它。这通常用于更好地组织类(一个类具有所有字段和方法,而另一个类包含 Main() 方法(要执行的代码))。

Car.cs

class Car 
{
   
  public string color = "red";
}

Program.cs

class Program
{
   
  static void Main(string[] args)
  {
   
    Car myObj = new Car();
    Console.WriteLine(myObj.color);
  }
}

您注意到了 public 关键字吗?它被称为访问修饰符,它指定 Carcolor 变量/字段对其他类(例如 Program)也是可访问的

C# 类成员

在C#中,类内的字段和方法通常被称为"类成员"

// The class
class MyClass
{
   
  // Class members
  string color = "red";        // field
  int maxSpeed = 200;          // field
  public void fullThrottle()   // method
  {
   
    Console.WriteLine("The car is going as fast as it can!");
  }
}

字段

下面的示例将创建 Car 类的对象,名称为 myObj。然后我们打印字段 colormaxSpeed 的值:

class Car 
{
   
  string color = "red";
  int maxSpeed = 200;

  static void Main(string[] args)
  {
   
    Car myObj = new Car();
    Console.WriteLine(myObj.color);
    Console.WriteLine(myObj.maxSpeed);
  }
}

您还可以将字段留空,并在创建对象时修改它们:

class Car 
{
   
  string color;
  int maxSpeed;

  static void Main(string[] args)
  {
   
    Car myObj = new Car();
    myObj.color = "red";
    myObj.maxSpeed = 200;
    Console.WriteLine(myObj.color);
    Console.WriteLine(myObj.maxSpeed);
  }
}

当创建一个类的多个对象时,这是特别有用的:

class Car 
{
   
  string model;
  string color;
  int year;

  static void Main(string[] args)
  {
   
    Car Ford = new Car();
    Ford.model = "Mustang";
    Ford.color = "red";
    Ford.year = 1969;

    Car Opel = new Car();
    Opel.model = "Astra";
    Opel.color = "white";
    Opel.year = 2005;

    Console.WriteLine(Ford.model);
    Console.WriteLine(Opel.model);
  }
}

对象方法

方法通常属于一个类,它们定义了类的对象的行为。

与字段一样,您可以使用点语法访问方法。但是请注意,方法必须是 public。并且请记住,我们使用方法的名称,后跟两个括号 () 和分号 ; 来调用(执行)方法:

class Car 
{
   
  string color;                 // field
  int maxSpeed;                 // field
  public void fullThrottle()    // method
  {
   
    Console.WriteLine("The car is going as fast as it can!"); 
  }

  static void Main(string[] args)
  {
   
    Car myObj = new Car();
    myObj.fullThrottle();  // 调用方法
  }
}

为什么我们将方法声明为 public

原因很简单:静态方法可以在不创建类对象的情况下访问,而公共方法只能由对象访问。

使用多个类

Car.cs

class Car 
{
   
  public string model;
  public string color;
  public int year;
  public void fullThrottle()
  {
   
    Console.WriteLine("The car is going as fast as it can!"); 
  }
}

Program.cs

class Program
{
   
  static void Main(string[] args)
  {
   
    Car Ford = new Car();
    Ford.model = "Mustang";
    Ford.color = "red";
    Ford.year = 1969;

    Car Opel = new Car();
    Opel.model = "Astra";
    Opel.color = "white";
    Opel.year = 2005;

    Console.WriteLine(Ford.model);
    Console.WriteLine(Opel.model);
  }
}

public 关键字称为访问修饰符,它指定 Car 的字段也可以由其他类(例如 Program)访问

最后

为了方便其他设备和平台的小伙伴观看往期文章:

微信公众号搜索:Let us Coding,关注后即可获取最新文章推送

看完如果觉得有帮助,欢迎 点赞、收藏、关注

相关文章
|
20天前
|
数据可视化 数据挖掘 BI
团队管理者必读:高效看板类协同软件的功能解析
在现代职场中,团队协作的效率直接影响项目成败。看板类协同软件通过可视化界面,帮助团队清晰规划任务、追踪进度,提高协作效率。本文介绍看板类软件的优势,并推荐五款优质工具:板栗看板、Trello、Monday.com、ClickUp 和 Asana,助力团队实现高效管理。
45 2
|
2月前
|
运维 持续交付 云计算
深入解析云计算中的微服务架构:原理、优势与实践
深入解析云计算中的微服务架构:原理、优势与实践
73 1
|
3月前
|
人工智能 数据可视化 前端开发
简化开发流程 低代码技术优势全解析
低代码开发通过可视化界面、预建模板和拖放操作简化开发流程,加速企业数字化转型。Zoho Creator等平台提供丰富模板、自动化工作流和第三方集成,降低开发成本,提高效率,成为未来应用开发趋势。
59 1
|
4天前
|
存储 物联网 大数据
探索阿里云 Flink 物化表:原理、优势与应用场景全解析
阿里云Flink的物化表是流批一体化平台中的关键特性,支持低延迟实时更新、灵活查询性能、无缝流批处理和高容错性。它广泛应用于电商、物联网和金融等领域,助力企业高效处理实时数据,提升业务决策能力。实践案例表明,物化表显著提高了交易欺诈损失率的控制和信贷审批效率,推动企业在数字化转型中取得竞争优势。
36 14
|
9天前
|
存储 监控 算法
企业内网监控系统中基于哈希表的 C# 算法解析
在企业内网监控系统中,哈希表作为一种高效的数据结构,能够快速处理大量网络连接和用户操作记录,确保网络安全与效率。通过C#代码示例展示了如何使用哈希表存储和管理用户的登录时间、访问IP及操作行为等信息,实现快速的查找、插入和删除操作。哈希表的应用显著提升了系统的实时性和准确性,尽管存在哈希冲突等问题,但通过合理设计哈希函数和冲突解决策略,可以确保系统稳定运行,为企业提供有力的安全保障。
|
2月前
|
编译器 C# 开发者
C# 9.0 新特性解析
C# 9.0 是微软在2020年11月随.NET 5.0发布的重大更新,带来了一系列新特性和改进,如记录类型、初始化器增强、顶级语句、模式匹配增强、目标类型的新表达式、属性模式和空值处理操作符等,旨在提升开发效率和代码可读性。本文将详细介绍这些新特性,并提供代码示例和常见问题解答。
52 7
C# 9.0 新特性解析
|
2月前
|
SQL IDE 数据库连接
IntelliJ IDEA处理大文件SQL:性能优势解析
在数据库开发和管理工作中,执行大型SQL文件是一个常见的任务。传统的数据库管理工具如Navicat在处理大型SQL文件时可能会遇到性能瓶颈。而IntelliJ IDEA,作为一个强大的集成开发环境,提供了一些高级功能,使其在执行大文件SQL时表现出色。本文将探讨IntelliJ IDEA在处理大文件SQL时的性能优势,并与Navicat进行比较。
36 4
|
2月前
|
机器学习/深度学习 人工智能 弹性计算
阿里云GPU服务器全解析_GPU价格收费标准_GPU优势和使用说明
阿里云GPU云服务器提供强大的GPU算力,适用于深度学习、科学计算、图形可视化和视频处理等场景。作为亚太领先的云服务商,阿里云GPU云服务器具备高灵活性、易用性、容灾备份、安全性和成本效益,支持多种实例规格,满足不同业务需求。
374 2
|
2月前
|
C# 开发者
C# 10.0 新特性解析
C# 10.0 在性能、可读性和开发效率方面进行了多项增强。本文介绍了文件范围的命名空间、记录结构体、只读结构体、局部函数的递归优化、改进的模式匹配和 lambda 表达式等新特性,并通过代码示例帮助理解这些特性。
39 2
|
2月前
|
存储 边缘计算 安全
深入解析边缘计算:架构、优势与挑战
深入解析边缘计算:架构、优势与挑战
59 0

推荐镜像

更多