专业的编程技术博客社区

网站首页 > 博客文章 正文

C#从Python中借鉴哪些新特性?(python与c#接口)

baijin 2024-10-15 08:30:21 博客文章 11 ℃ 0 评论

C#6.0及之前的不做讨论了,大部分借鉴C++,Delphi和Java ,咱们讨论些新特性。

1,元组(Tuple)和弃元(_) (C#7.0 .NetFW4.6.2)

2,索引和范围 (Index and Range ,C#8.0 .NetCore3)

新增了 末尾运算符 ^ 和 范围运算符 ..

var words = new string[]{
    "The",      // 0                   ^5
    "quick",    // 1                   ^4
    "brown",    // 2                 ^3
    "fox",        // 3                  ^2
    "jumped"   // 4                 ^1
};                 // 5                    ^0
Console.WriteLine(#34;The last word is {words[^1]}");// output:     "jumped"
var quickBrownFox = words[1..4]; // 右侧等效于Python的 words[ 1 : 4 ]
var lazyDog = words[^2..^0]; // 右侧等效于Python的 words[ -2 :  ] #Python没有"-0"
var allWords = words[..]; //右侧等效于 words[0..5];
var firstPhrase = words[..4]; // 右侧等效于 words[0..4];
var lastPhrase = words[3..]; // 右侧等效于 words[3..5];

还可以将范围声明为变量,然后可以在数组标识符中使用:

Range phrase = 1..4;
var text = words[phrase]; 

3,顶级语句(C#9.0 .NetCore5)

一个应用程序中只能有一个文件可使用顶级语句,需要将这个文件作为入口。实际上相当于隐藏了Main函数。这是个超甜的语法糖,这下C#可以更方便的作为脚本来使用了,就像Python一样。

//常规语法:
using System;
namespace HelloWorld{
    class Program    {
        static void Main(string[] args) {
            Console.WriteLine("Hello World!");
        }
    }
}

//以上代码等效于新的构造方法:
System.Console.WriteLine("Hello World!"); 

还有没有其它特性是从Python或其它语方借鉴来的,请条友们一起讨论。


参考文档:

https://docs.microsoft.com/zh-cn/dotnet/csharp/whats-new/csharp-9

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表