CodeGym /课程 /C# SELF /C#典型程序结构

C#典型程序结构

C# SELF
第 8 级 , 课程 1
可用

1. 程序就像一个有很多部门的办公室

刚开始学编程的时候,你可能觉得直接一行一行写代码就行了,反正都能跑。但只要程序稍微复杂点,脑子里就开始乱套:啥东西在哪,为什么要这么写,要改一行代码还得找半天……

所以C#,和大多数现代语言一样,给我们提供了“分门别类”整理代码的方法,这样你随时都能搞清楚程序在干嘛,还能很快找到你想改的地方。

想象一下一个公司。有HR部门、财务部、IT部、物流部等等。每个部门都有自己的职责、员工和任务。

C#程序里,每个这样的“部门”就是一个。比如有的类专门处理用户,有的类负责计算,有的类管文件。

下面是一个简单项目的典型结构:

  • Program.cs — 总部:这里是“入口点”,一切从这开始。
  • User.cs — 存储和处理用户数据的部门。
  • Calculator.cs — 计算部门。
  • FileHelper.cs — 文件专家。

就算是很小的程序,通常也至少有一个类。大项目那就是上百个类的“摩天大楼”!

2. 类就是一箱工具

C#是面向对象的语言,一切都是对象。对象的类型叫

类就像一个箱子或者小柜子,我们把需要的东西都放进去:变量、方法、属性。想象一下有个写着“锤子”的箱子,里面全是和锤子有关的工具。

class Example
{
    // 这里放我们的工具:变量、方法、属性
}
C#里的类声明

类通常包含变量和函数。在C#里,类的变量一般叫字段,类的函数叫方法。不过本质都一样。

还记得我们写的第一个代码吗?

Console.WriteLine("大家好!");
string name = Console.ReadLine();

这段代码里其实就有类和方法:

  • Console — 这是个类,里面有处理控制台的各种方法(函数)。
  • WriteLine — 这是Console类的方法,用来把文本输出到屏幕。
  • ReadLine — 这是Console类的方法,用来读取键盘输入。

其实编程基本就是写自己的类和方法,然后调用别的类的方法。

3. 类的字段(变量)就是它的记忆

在类里面可以存变量(经常叫“字段”)。就像内存格子,我们把数据放进去。

class Counter
{
    int value; // 字段——这里存Counter当前的值
}
类的字段(变量)示例

字段让类在调用不同方法之间能记住点啥。比如,统计按钮被点了多少次。

字段可以有很多个。举个例子:

class User
{
    int id;             // 用户唯一编号
    string name;        // 用户名
    int age;            // 年龄
    string address;      // 地址
    User[] children;    // 孩子
}

4. 方法——类能做的事

方法就是类的“技能”。如果类是员工,那方法就是他会啥。

  • 方法可以把东西输出到屏幕
  • 计算两个数的和。
  • 接收输入数据并返回结果。

方法的结构:

  • 返回值类型(比如void——啥都不返回,或者int——返回数字)
  • 方法名(比如Print
  • 括号里的参数(可以没有)
  • 大括号{ ... }——方法体
class Printer
{
    public void PrintHello()
    {
        Console.WriteLine("Hello!");
    }

    public int Add(int a, int b)
    {
        return a + b;
    }
}
类的方法示例

关于方法和相关细节,后面几节课会详细讲。

5. 属性——智能变量

属性(property)就像“升级版”变量:它不光能存值,还能在取值或改值时做点事。

举个生活例子:你不能随便改员工工资——财务会查查对不对。属性也能“检查”数据:

class Person
{
    private int age;		// 类的变量(字段)

    public int Age			// 属性Age。数据存到类的变量age里。
    {
        get { return age; }	// get方法——有人想获取Age时会调用
        set 				// set方法——有人想改Age时会调用
        {
            if (value >= 0)
                age = value;
        }
    }
}

set方法里的代码不让你设置负数年龄。属性后面还会详细讲。

6. 访问修饰符

在C#里,你可以决定类的哪些部分能被别的类访问,哪些只能自己用。就是用访问修饰符。如果字段、方法或类前面写了public,那全程序都能访问它。

如果前面写了private,那只有自己类里能访问。别的类根本看不到,就像不存在一样。

  • public — 所有人都能看到。这样的方法和属性可以被别的类用。
  • private — 只有自己类里能看到。这是内部细节,别的类不该碰。
class Demo
{
    public int OpenValue;     // 外部可见
    private int secretValue;  // 只有内部可见

    public void ShowOpen() { Console.WriteLine(OpenValue); }
    private void HideSecret() { Console.WriteLine(secretValue); }
}

黄金法则:字段一般都设成private,只把需要的方法和属性public出来。

7. 真实类长啥样

来个“拼装”例子——迷你计算器:

class Calculator
{
    private int result; // 存结果的字段

    public int Result
    {
        get { return result; }
        private set { result = value; } // 只能类内部访问
    }

    public void Add(int a, int b)
    {
        result = a + b;
    }

    public void Clear()
    {
        result = 0;
    }
}

这种写法几乎所有现代C#程序都用!

8. Top-level statements

其实在C#里,所有代码都在类里。类是程序的最小单位。一个程序可以有很多类,最少也得有一个。

等等,那我们刚才写的那些代码,怎么没见有类啊?!

这就是C#的新潮玩法:你可以直接写代码不用类,C#编译器会自动帮你包进一个类里。

比如你在Program.cs里写了这样:

// 你的代码
WriteSmile();
WriteSmile();
WriteSmile();

//你自己的函数
void WriteSmile()
{
    Console.WriteLine(":)");
}
Top-level statement:不用类的代码

C#编译器会把它变成这样:

using System;

class Program
{
    static void Main()			// 你的代码
    {
        WriteSmile();
        WriteSmile();
        WriteSmile();        
    }

    static void WriteSmile()	//你自己的函数
    {
        Console.WriteLine(":)");
    }
}
编译器如何把top-level statement变成类

如果你只看懂了一半也没事:只要你抓住了大意就行。后面几节课我们会一步步把这些都讲清楚。

2
任务
C# SELF, 第 8 级, 课程 1
已锁定
创建一个带有字段和方法的简单类
创建一个带有字段和方法的简单类
2
任务
C# SELF, 第 8 级, 课程 1
已锁定
包含多个方法的类
包含多个方法的类
评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION