发布于 2026-01-06 0 阅读
0

C# 的演变

C# 的演变

近年来,C# 一直位列全球最受欢迎和使用最广泛的十大编程语言之列。C# 诞生至今已有 20 余年,其语法不断演变,如今也衍生出各种与之兼容的技术,使其成为一门值得学习和深入钻研的语言。

在本文中,我们将回顾我个人认为在版本 10 之前最重要的几个 C# 发展阶段。

第一阶段:Java 版本和 Visual Basic 时代(C# 1 - C# 2)

早期的 C# 版本功能非常有限,几乎在所有方面都与 Java 和 C++ 相似,以至于 C# 被认为是 Java 的山寨版。尽管它受到了包括 Pascal 在内的多种语言的启发,但人们很难接受它与 Java 的相似性,以及它发布时 Java 正处于主导地位的事实。

对于微软开发人员来说,Visual Basic 仍然是首屈一指的语言,并且更受社区的认可。

在此期间(版本 1/2),C# 的一些改进值得重点关注,包括:

部分类

public partial class MyClass
{
    public void MyMethod1()
    {
        // Manually written code
    }
}

//file2.cs:
public partial class MyClass
{
    public void MyMethod2()
    {
        // Automatically generated code
    }
}
Enter fullscreen mode Exit fullscreen mode

仿制药

public static IEnumerable<int> GetEven(IEnumerable<int> numbers)
{
    foreach (int i in numbers)
    {
        if (i % 2 == 0)
            yield return i;
    }
}
Enter fullscreen mode Exit fullscreen mode

第二阶段:新宠儿(C#3 - C#4)

现阶段,C# 开始变得越来越流行,许多微软开发人员开始使用它,并将其融入到他们喜欢的语言中。

C# 开始吸收其他编程语言已有的各种改进,并着手改进其语法。它也被 Xamarin、Mono 和 Unity 等其他技术所采用。

C#(版本 3-4)在此期间的一些改进值得重点关注。

Lambda 表达式

//before C#3:
listOfFoo.Where(delegate(Foo x) { return x.Size > 10; });
//C# 3:
listOfFoo.Where(x => x.Size > 10);
Enter fullscreen mode Exit fullscreen mode

默认参数

void Increment(ref int x, int dx = 1)
{
  x += dx;
}
Enter fullscreen mode Exit fullscreen mode

第三阶段:创新者(C# 5 - C# 6)

C# 开启了新的篇章,它通过展示创新性的改进,展现了其卓越的性能,这些改进后来被其他编程语言所借鉴。

async/await 已成为多种编程语言处理异步操作的标准。凭借这一改进,C# 摆脱了 Java 的阴影,成为一种独特、创新且更简洁的语言。

此外,C# 的 async/await 实现了不同的运算符,使我们能够简化用于进行检查和条件判断的代码行数。

最值得强调的改进之处有:

异步/等待

public async Task<int> GetUrlContentLengthAsync()
{
    var client = new HttpClient();
    Task<string> getStringTask =
        client.GetStringAsync("https://docs.microsoft.com/dotnet");
    DoIndependentWork();
    string contents = await getStringTask;
    return contents.Length;
}
Enter fullscreen mode Exit fullscreen mode

字符串插值

$"Expected: {expected} Received: {received}."
Enter fullscreen mode Exit fullscreen mode

空运算符

var ss = new string[] { "Foo", null };
var length0 = ss [0]?.Length; // 3
var length1 = ss [1]?.Length; // null
var lengths = ss.Select (s => s?.Length ?? 0);
Enter fullscreen mode Exit fullscreen mode

第四阶段:最完整的(C# 7 - C# 8)

经过多次改进和持续发展,C# 开始在开发者中流行起来,随着 .core 的出现和发展,开源社区也开始给予它机会。C# 仍然是世界上使用最广泛的五大编程语言之一,并持续获得对各种技术的强大支持。

现在,随着 C# 的不断改进,有好几种方法可以实现同一件事,但根据具体情况,你可以使用某种语法,并寻找减少代码行数的方法。

C# 还采用了其他编程语言(如 Python)的许多增强功能,例如元组和局部函数(如 JavaScript)。

一些内置增强功能,

元组

(double, int) t1 = (4.5, 3);
Enter fullscreen mode Exit fullscreen mode

局部函数

private static string GetText(string path, string filename)
{
     var reader = File.OpenText($"{AppendPathSeparator(path)}{filename}");
     var text = reader.ReadToEnd();
     return text;
     string AppendPathSeparator(string filepath)
     {
        return filepath.EndsWith(@"\") ? filepath : filepath + @"\";
     }
}
Enter fullscreen mode Exit fullscreen mode

第五阶段:极简主义(C#9 - C#10)

C# 和 Java 最大的诟病之一就是编写简单代码的复杂性。

任何刚入门的开发者,如果尝试用 C# 写一个“Hello World”程序,都会惊讶地发现他竟然需要了解命名空间、类和方法这些概念。考虑到他只是在学习和理解编程世界,这确实令人难以置信。像 JavaScript、Go 和 Python 这样的语言极大地简化了编程方式,因此深受初级开发者的青睐,也受到许多需要加快开发速度、降低学习难度的公司的青睐。

C# 9 和 C# 10 是我们多年努力的梦想,我们希望 C# 不仅受到资深开发人员或大型公司的青睐,而且受到初级开发人员和新兴创业公司的青睐。

C# 10 最后,我们可以说 C# 的“Hello World”程序只需要一行代码:

Console.WriteLine("Hello World");
Enter fullscreen mode Exit fullscreen mode

C# 9 和 C# 10 中的特性

顶级声明

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World!");
        }
    }
}

//In C# 9:
using System;
Console.WriteLine("Hello World!");
Enter fullscreen mode Exit fullscreen mode

全球使用,

namespace MyNamespace;
Enter fullscreen mode Exit fullscreen mode

使用 C# 的增强功能可以帮助您减少代码行数并应用最佳实践。C# 是一门发展历程引人入胜的语言,正是这段历程使其始终保持着流行度。

在微软官方文档中,您总能找到每项增强功能的描述和示例。

https://docs.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-10

如果你想为 C# 的设计和发展做出贡献,你可以创建 issue 或参与官方仓库的讨论。

https://github.com/dotnet/csharplang

文章来源:https://dev.to/mteheran/c-evolution-3o9o