我对C#的认知。

我对C#的认知。
最新回答
想你想的,我骨头痛。

2026-07-10 11:12:11

从纯技术角度对C#的认知以及不同技术级别所需掌握的内容如下:

C#入门标准

C#的入门技术是委托、事件、消息,只有纯熟运用这三个技能,才算真正入门C#。很多人学了一些语法编写项目后就自认为精通C#,实际上还未入门,这种情况在对日开发领域较为常见。

不同技术级别对C#各知识领域的掌握要求
  • Common Language Runtime(公共语言运行时)

    初级人员:通常无视它。

    中级人员:起码要知道它的存在。

    高级人员:多数要会使用其中一些应用,比如security相关内容。

    架构师:要理解其原理。

  • .NET Framework

    包含许多框架,掌握的框架数量越多越好。不同级别的开发者都应不断拓展自己在这方面的知识储备,以应对更复杂的开发需求。

  • Base Class Library(基类库)

    基本语法集合,想成为高手一定要全部学会,不能有遗漏。这是构建扎实C#基础的关键部分,对于深入理解和运用C#语言至关重要。

  • Runtime Infrastructure Library(运行时基础结构库)

    初级开发者:不用了解。

    中级开发者:进入中级阶段就要开始一点点吸收相关知识。

    高级开发者:要全部消化这些内容。

  • Framework Class Library(框架类库)

    基本应用集合,初级程序员可能都会接触一些;中级程序员会了解和运用一些;高级程序员要全部会用。

  • Core Concepts(核心概念)

    与上述部分知识的学习要求类似,随着级别的提升,需要不断深入掌握。

  • Desktop(桌面开发)

    CUI(控制台用户界面):了解即可。

    GUI(图形用户界面):要深入了解,且涉及XAML语言,需要学会该语言。

  • Web开发

    SharePoint:如果工作没涉及,不去了解也可以。

    ASP.NET:是必会内容,其中的MVC就算工作没应用也要学会。

    ASP.NET Runtime:是进阶高手的一个路障,了解得越多越好。

    Silverlight:会XAML基本就能用,如果工作需要则要精通。

  • SOA(面向服务的架构)

    这是必会的内容,而且至少要精通其中一个方面。SOA在现代软件开发中应用广泛,掌握它有助于构建更灵活、可扩展的系统。

  • Open Web Interface for .NET

    要了解并会使用,如果工作需要,则要达到精通的程度。这有助于开发与.NET相关的Web应用时更好地进行接口交互。

  • SDK(软件开发工具包)

    要了解并会基本使用。SDK为开发者提供了开发特定软件或应用的工具和资源,掌握基本使用方法能提高开发效率。

  • Development(开发工具)

    基本没有人能全会所有开发工具,但要熟练使用常用工具。毕竟工具掌握得越多越好,不过这并非技术加分项,而是提高开发效率的基础能力。

  • Platforms(平台)

    基本很难有人全精所有平台,但至少要了解,对于工作用过的平台要达到精通的程度。不同平台有不同的特性和开发要求,熟悉相关平台能更好地进行项目开发。

  • Productivity(生产力工具)

    起码NuGet要会用。NuGet是.NET的软件包管理器,能方便地安装和管理项目依赖的库和组件。

  • Build(构建)

    高级人员要了解其原理。构建过程是将源代码转换为可执行程序的过程,了解构建原理有助于优化开发流程和解决构建相关问题。

  • Testing(测试)

    至少要会使用1种测试工具,其他的要了解。测试是保证软件质量的重要环节,掌握测试工具和方法能提高软件的稳定性和可靠性。

  • Deploy/publish(部署/发布)

    基本用法可以通过百度获取,了解相关概念即可,起码知道有这些东西,需要的时候可以进一步搜索学习。部署和发布是将开发好的软件交付到实际运行环境的过程。

  • Framework Tool(框架工具)

    有些是必会的,有些会用就行,但最好全部了解,需要的时候学习其用法。框架工具能帮助开发者更高效地使用框架进行开发。

  • Data(数据相关)

    作为高级人员是必会的,如果其中的ORM(对象关系映射)可以用EF(Entity Framework)作为跳板深入研究。数据是软件的核心部分,掌握数据相关技术对于开发高质量的软件至关重要。

  • Components(组件)

    中级以后难免要接触这些,了解得越多进步得越快。组件化开发能提高代码的复用性和可维护性。

  • Concept(概念)

    中级以后就会接触,像IOC(控制反转)、AOP(面向切面编程)、MVC(模型 - 视图 - 控制器)、MVVM(模型 - 视图 - 视图模型)、DDD(领域驱动设计)等等。在学习这些概念的过程中可以逐渐向架构师前进。

    基本概念:如IOC、AOP,在编码时可能已经应用过了,有一些现成的开源代码,原理简单,学会后可以用具体语言来表达编码方式,不去了解也无妨,但知道得多方便交流。

    高级概念:如DDD,光靠百度是学不会的,一定要应用过才能了解,很复杂,非技术人员很难理解,技术人员也未必有那么好的口才讲解。

程序员的其他必备知识

除了C#相关知识,程序员还需要掌握其他必备知识:

  • 前端技术:HTML和CSS、JS要会,起码DIV + CSS切图玩得起来才算会。
  • 数据库:数据库水很深,不要轻易说自己有初级DBA的水平。作为高级开发人员,起码存储过程要信手拈来,要有解决过大数据死锁的经验。
  • 设计软件:如果业余爱好丰富一点,PS基本使用也要会,flash也要了解,3Dmax也可以玩玩,程序员也要有美感。
  • 文档编写:要会写文档,解决方案是基本技能,高级点的概要设计也是文档,高级程序员难免还得写点PPT。
  • 其他知识:还要了解操作系统、硬件、软件工具等知识,因为不一定什么时候面对性能bug,就需要这些知识才能解决或解释。此外,要接触一些开源代码,如现在开源的Xamarin。