Home
avatar

.𝙃𝙖𝙣

开始补 .NET 了,先把语法和面向对象这条主线过一遍

最近公司的后端开始缺人,后端大哥也有意让我往这边顶一顶。

我现在的状态有点像两条线一起走:一边还在做 ComfyUI 相关的东西,一边开始正式补 .NET。前面先学过一段 Python 以后,再看 C# 和 .NET 的语法,确实没那么陌生了。但后端大哥也提醒了我一件事:语法不是最核心的,现代开发真正要补的是面向对象。

所以这篇先不急着记业务,先把这几天接触 .NET 时最关键的几块记下来。

1. 为什么开始学 .NET

这次开始碰 .NET,不是因为我突然想换方向,而是项目和岗位都在往这边推。

前面我更多还是在接 SD、ComfyUI、Python 这些东西,解决的问题也偏工具、流程和脚本一点。但公司后端这边开始缺人以后,事情就变了。

因为后端岗位一旦顶不上,很多事情都不是“慢慢学也行”,而是必须尽快能接起来。

后端大哥当时跟我说得也挺直接,大概意思就是:

  • 语法先别怕
  • 你前面已经碰过 Python 了
  • 很多编程语言的基础概念其实是通的
  • 真正要补的,是面向对象这套思路

这句话我这几天越学越能体会到。

因为单看语法,确实没有我一开始想得那么吓人。变量、判断、循环、方法这些东西,本质上还是熟悉的。

真正让我有点卡住的,是:

  • 类到底是干嘛的
  • 对象和类是什么关系
  • 属性和字段怎么区分
  • 方法为什么要挂在类里面
  • 为什么后端项目里到处都是类、接口、实体、服务

所以这篇就先把我现在对 .NET 和面向对象的理解,按最基础的一层记一下。

2. 先说最直观的感受:有 Python 基础以后,再看 C# 没那么慌

我一开始以为自己从 Python 切到 C# 会很难。

结果真正开始看代码以后,反而没有那么乱。

因为很多东西本质上还是熟悉的:

  • 变量
  • 字符串
  • 数字
  • 条件判断
  • 循环
  • 方法
  • 参数
  • 返回值

这些概念不是换了语言就完全推倒重来。

所以我现在对“后端大哥说的一通百通”这句话,理解也更具体一点了。

它不是说语言都一样,而是说:

只要已经建立起一点编程感,再学一门新语言时,最开始不需要从 0 理解“什么叫代码”,而是重点去看这门语言自己的表达方式和组织方式。

这对我帮助挺大,因为它让我没那么容易一上来就被语法唬住。

我现在会更愿意把 C# 分成两层去看:

第一层:基础语法

这部分和我前面碰到的 Python 有很多相通的地方。

第二层:代码组织方式

这部分就是我现在更需要补的,比如类、对象、封装这些东西。

前一层能让我先把代码读下去,后一层才是真正决定我以后能不能写后端的核心。

3. 语法这块,我现在先抓“能读懂”而不是“全背下来”

这几天开始看 .NET 和 C# 的时候,我没有打算一上来就把所有语法细节都记死。

我给自己的目标比较现实:

先把常见代码看懂,知道每一段大概在做什么。

比如最基础的这些:

string name = "kzh";
int age = 23;
bool isWorking = true;

这时候我其实不会把重点放在“语法和 Python 有多不一样”,而是先抓住:

  • string 是字符串类型
  • int 是整数
  • bool 是布尔值
  • 变量声明时会把类型写出来
  • 行尾一般要加分号

这个阶段我觉得最重要的,不是追求记得多细,而是让自己别再一看到 C# 代码就发虚。

再比如方法:

public int Add(int a, int b)
{
    return a + b;
}

我现在先把它拆成最直接的几个点:

  • public 是访问修饰符
  • int 是返回值类型
  • Add 是方法名
  • (int a, int b) 是参数
  • return 是返回结果

这么拆以后,至少能先读。

我现在越来越觉得,学新语言前期最重要的与其说是“会默写”,不如说是“能拆结构”。

4. 真正让我开始认真看的,是“类”这个东西

只看基础语法,我现在并不会特别慌。

但一看到项目代码里大量出现:

  • class
  • public
  • private
  • new
  • 属性
  • 构造函数

我就知道,真正的重点来了。

因为 Python 那边虽然也能写类,但我前面更多还是在写脚本、看示例、改节点,没真正把“面向对象”当成主线去学。

而到了 .NET 这边,类几乎是绕不开的。

所以我这几天最大的转折点,不是学到某个语法糖,而是开始意识到:

后端代码不是一堆函数平铺着写,而是要按对象和职责去组织。

这个认知对我很关键。

因为它意味着我不能再只停在“这行代码会不会写”,而是要开始问:

  • 这段逻辑应该放在哪个类里
  • 这个类是负责什么的
  • 它暴露哪些方法
  • 它要不要保存状态

也就是从“写一段代码”开始往“组织一段代码”走。

5. 我现在对“类”和“对象”的理解,先记个最朴素的版本

这个阶段我不想硬背定义,先记我现在自己能用得上的理解。

我现在先把类理解成:

一个模板,一种定义,一种把数据和行为组织在一起的方式。

比如:

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public void SayHello()
    {
        Console.WriteLine("hello");
    }
}

这里的 Person,对我现在来说就是一个“人”的模板。

它里面可以放:

  • 数据:比如姓名、年龄
  • 行为:比如打招呼

对象

对象我现在先理解成:

按照类这个模板,真正创建出来的一个具体实例。

比如:

Person p = new Person();
p.Name = "kzh";
p.Age = 23;

这里 p 就是一个真正创建出来的对象。

这个理解虽然还很基础,但至少让我开始能把“类”和“对象”分开看了。

以前我会觉得这两个词总是绕,现在至少知道:

  • 类偏定义
  • 对象偏实例

6. 属性和方法,我现在先理解成“一个负责存东西,一个负责做事情”

这两天我在看类的时候,最常碰到的就是属性和方法。

属性

像这种:

public string Name { get; set; }
public int Age { get; set; }

我现在先把属性理解成:

挂在对象身上的数据。

它的作用就是存信息。

比如:

  • 用户名
  • 年龄
  • 状态
  • 地址
  • 时间

这些都很适合放在属性里。

方法

像这种:

public void SayHello()
{
    Console.WriteLine("hello");
}

我现在先把它理解成:

挂在类里的行为。

  • 属性偏“这个对象有什么”
  • 方法偏“这个对象能做什么”

我觉得这个拆法对入门阶段特别有用。

因为它能先帮我看懂,一个类为什么不只是装数据,还会带一些操作逻辑。

7. 后端大哥一直强调“面向对象”,我现在慢慢能理解为什么了

一开始我其实有点不明白,为什么非得反复强调面向对象。

我会觉得,能把功能写出来不就行了吗?

但这几天看项目代码、再加上自己学这部分以后,我慢慢开始知道为什么它重要。

因为后端项目不像一次性脚本。

后端代码一般会越来越多,而且往往会同时面对:

  • 数据
  • 业务逻辑
  • 接口
  • 数据库
  • 状态
  • 权限
  • 异常

如果没有一个比较稳定的组织方式,代码很快就会散。

而面向对象至少先给了一种比较清晰的组织方法:

  • 什么数据属于谁
  • 什么行为归谁管
  • 哪些东西该封在一起
  • 哪些东西应该对外暴露

我现在还谈不上真正学透,但至少已经开始能理解:

面向对象不是为了让代码显得高级,而是为了让代码规模上来以后还不至于完全失控。

这句话我现在挺认同的。

8. 我现在先记几个最常见的面向对象关键词

我现在不准备一下把整套理论吃完,先把最常见的几个词记住。

封装

我的当前理解:

把相关的数据和操作包在一起,对外只暴露该暴露的部分。

这个词我现在虽然还在消化,但至少知道它不是空话。项目里很多 publicprivate 的区别,本质上就在这里。

继承

我的当前理解:

一个类可以在另一个类的基础上继续扩展。

这个我现在接触还不深,但看代码时已经开始会留意它的使用场景。

多态

这个我现在先不硬讲透。

先记住它和接口、重写这些东西关系比较大,后面再往深了补。

我觉得这个阶段最重要的不是装懂,而是先把自己当前真的理解到哪记清楚。

9. 这几天学下来,我最大的变化是:开始不再只盯一行代码,而是开始看结构

前面学 Python 的时候,我更多还是先看语句本身。

到了 .NET 这边,尤其是开始接触类以后,我会发现自己看的层级开始变了。

现在我会慢慢去看:

  • 这个类是干嘛的
  • 这里为什么要定义属性
  • 这个方法为什么属于这个类
  • 这个对象是在哪创建的
  • 这段逻辑是数据处理,还是业务处理

这个变化挺重要的。

因为它说明我现在接触编程,开始不只是“把某段代码敲出来”,而是慢慢开始理解代码为什么要这样组织。

我觉得这应该就是我从脚本感往后端感走的一步。

10. 先记一个现阶段目标

我现在对 .NET 这条线的目标,先不定太高。

现阶段更实际的是:

  1. 先把 C# 常见语法看顺
  2. 先把类、对象、属性、方法这些基础概念弄明白
  3. 先理解为什么后端项目里大量使用面向对象
  4. 再往后接接口、实体、服务这些更真实的项目结构

我现在最大的感受是:

前面学 Python 的时候,更多是在补“代码怎么写”;现在开始学 .NET,补的已经不只是代码了,而是代码应该怎么组织

这个层级明显不一样。所以这篇先记到这里。

我现在已经开始感觉到,后端开发难的地方,是长期维护。

.NET C# 面向对象 学习笔记 后端