Menu
CoddyTech

静态类

本课属于 Coddy C# 学习旅程的“面向对象编程”单元。第 13 课,共 70 课。

如果一个类只包含静态成员,而且你不需要创建它的实例,就可以将整个类声明为 static。这样可以告诉编译器,这个类不能被实例化,并且只能包含静态成员。

public static class MathHelper
{
    public static double Pi = 3.14159;
    
    public static int Square(int number)
    {
        return number * number;
    }
    
    public static int Add(int a, int b)
    {
        return a + b;
    }
}

使用静态类的方式和使用静态成员一样,直接通过类名调用:

int result = MathHelper.Square(5);
double pi = MathHelper.Pi;

静态类有一些重要限制。你不能使用 new 创建实例,静态类不能有实例构造函数,也不能被继承。静态类只能包含静态字段、属性和方法。

你一直在使用的 Console 和 Math 类是静态类的典型示例。它们提供实用功能,无需对象状态。静态类非常适合用于归类相关的辅助方法或常量,这些方法或常量不需要任何特定于实例的数据。

challenge icon

挑战

简单

让我们使用静态类构建一个温度转换工具,用它来归类不需要任何对象状态的相关辅助方法。

你将创建两个文件来组织代码:

  • TemperatureConverter.cs:在 Utilities 命名空间中定义一个名为 TemperatureConverter 的静态类。这个类应包含:
    • 一个静态字段 AbsoluteZeroCelsius,值设为 -273.15
    • 一个静态方法 CelsiusToFahrenheit(double celsius),使用公式 (celsius * 9 / 5) + 32 将摄氏温度转换为华氏温度
    • 一个静态方法 FahrenheitToCelsius(double fahrenheit),使用公式 (fahrenheit - 32) * 5 / 9 将华氏温度转换为摄氏温度
    • 一个静态方法 IsAboveAbsoluteZero(double celsius),如果温度高于绝对零度,则返回 true
  • Program.cs:在主文件中使用静态类进行温度转换。从输入中读取摄氏温度值,然后显示转换结果和验证结果。

你将收到一个输入:一个摄氏温度值。

按以下格式打印结果:

{celsius}C = {fahrenheit}F
{fahrenheit}F = {convertedBack}C
Above Absolute Zero: {True/False}
Absolute Zero: {AbsoluteZeroCelsius}C

例如,如果输入是 25,输出应为:

25C = 77F
77F = 25C
Above Absolute Zero: True
Absolute Zero: -273.15C

请记住,静态类无法实例化。你需要直接通过类名调用所有方法,例如 TemperatureConverter.CelsiusToFahrenheit(25)。

亲手试试

using System;
using Utilities;

class Program
{
    public static void Main(string[] args)
    {
        // 读取摄氏温度
        double celsius = Convert.ToDouble(Console.ReadLine());
        
        // TODO:使用 TemperatureConverter 的静态方法:
        // 1. 将 celsius 转换为华氏温度
        // 2. 将 fahrenheit 转换回摄氏温度
        // 3. 检查温度是否高于绝对零度
        // 4. 获取绝对零度常量
        
        // TODO:按要求的格式输出结果:
        // {celsius}C = {fahrenheit}F
        // {fahrenheit}F = {convertedBack}C
        // Above Absolute Zero: {True/False}
        // Absolute Zero: {AbsoluteZeroCelsius}C
        
    }
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

面向对象编程中的所有课

自己练习: C# 在线编译器