网站支付方案的设计,手机app用什么工具开发,百度新闻首页新闻全文,三国网页游戏排行榜在 Stack Overflow 调查中#xff0c;C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序#xff0c;范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能#xff0c;对于开发人员来说#xff0c;要跟上新功能发布的最新信息将是一项艰巨的任务。本… 在 Stack Overflow 调查中C# 语言是排名第 5 位的编程语言。它广泛用于创建各种应用程序范围从桌面到移动设备再到云原生。由于有如此多的语言关键字和功能对于开发人员来说要跟上新功能发布的最新信息将是一项艰巨的任务。本文深入探讨了每个 C# 开发人员都应该知道的 10 个 C# 关键字。 1. Async 和 Await 关键词 asyncawait C# 中引入的 and 关键字使得在 C# 中处理异步编程变得容易。它们允许您编写在不阻塞主线程的情况下执行操作的代码。此功能对于受 I/O 限制或 CPU 密集型的任务特别有用。通过使用这些关键字程序员可以轻松处理长时间运行的计算操作例如调用外部 API 来获取数据或从网络驱动器写入或读取。这将有助于开发响应式应用程序并可以处理并发操作。asyncawait 例 C# 1
public async Taskstring GetDataAsync()
2
{
3using (HttpClient client new HttpClient())
4{
5string result await client.GetStringAsync(http://bing.com);
6return result;
7}
8
} 2. LINQ 关键词 fromselectwheregroupintoorder byjoin LINQ语言集成查询提供了一种简单的方法可以直接在 C# 中查询各种数据源如数据库、集合和 XML而无需与其他框架如 ADO.NET 等交互。通过使用与 SQL 相同的语法LINQ 使开发人员能够以可读的方式编写查询。 例 C# 1
var query from student in students
2where student.Age 18
3orderby student.Name
4select student; 3. 性能 关键词property 属性主要是提供灵活机制来读取、写入或计算私有字段值的成员。通常我们隐藏内部私有支持字段并通过属性公开它们。这使调用者可以轻松访问数据。在下面的示例中是隐藏名为 的支持字段的属性标记为以避免外部调用者直接修改该字段。publicNamenameprivate 例 C# 1
class Person
2
{
3private string name; // backing field
4public string Name // property
5{
6get { return name; }
7set { name value; }
8}
9
}
1011
class Program
12
{
13static void Main(string[] args)
14
{
15Person P1 new Person();
16P1.Name Sunny;
17Console.WriteLine(myObj.Name);
18}
19
} 4. 泛型 关键词 genericT 泛型允许您为类编写代码而无需指定该类所处理的数据类型。它是一个类允许用户使用占位符定义类和方法。C#2.0 中泛型的引入彻底改变了创建模块化可重用代码的格局否则这些代码需要在多个地方复制。想象一下您正在处理 2 个数字的相加然后需要添加 s 或数据类型。我们最终创建了相同的重复代码因为我们已经在方法参数中定义了一个具有数据类型的方法。泛型使定义占位符和处理不同数据类型的逻辑变得容易。intfloatdoubleint 例 C# 1
public class Print
2
{
3// Generic method which can take any datatype as method parameter
4public void DisplayT(T value)
5{
6Console.WriteLine($The value is: {value});
7}
8
}
910
public class Program
11
{
12public static void Main(string[] args)
13
{
14Print print new Print();
1516// Call the generic method with different data types
17print.Displayint(10);
18print.Displaystring(Hello World);
19print.Displaydouble(20.5);
20}
21
} 5. 代表和活动 关键词 delegateevent 委托只不过是一个对象它引用一个方法你可以直接通过它来调用而不直接调用该方法。委托等效于 C 中的函数指针。委托是指向任何方法的类型安全指针。委托主要用于实现回调方法和处理事件。 并且是 C# 中开箱即用的内置代表。delegateFuncTActionT 另一方面事件使类或对象能够在发生感兴趣的事情时通知其他类或对象。例如考虑用户单击您网站上的按钮的场景。它生成一个事件在本例中为按钮单击由相应的事件处理程序代码处理。 例子 声明和实例化 a 的示例代码delegate C# 1
public delegate void MyDelegate1(string msg); // declare a delegate
23
// This method will be pointed to by the delegate
4
public static void PrintMessage(string message)
5
{
6Console.WriteLine(message);
7
}
89
public static void Main(string[] args)
10
{
11// Instantiate the delegate
12MyDelegate1 del PrintMessage;
1314// Call the method through the delegate
15del(Hello World);
16
} 用于启动事件并通过处理程序处理事件的示例代码event C# 1
// Declare a delegate
2
public delegate void Notify();
34
public class ProcessBusinessLogic
5
{
6public event Notify ProcessCompleted; // Declare an event
78public void StartProcess()
9
{
10Console.WriteLine(Process Started!);
11// Some actual work here..
12OnProcessCompleted();
13}
1415// Method to call when the process is completed
16protected virtual void OnProcessCompleted()
17
{
18ProcessCompleted?.Invoke();
19}
20
}
2122
public class Program
23
{
24public static void Main(string[] args)
25
{
26ProcessBusinessLogic bl new ProcessBusinessLogic();
27bl.ProcessCompleted bl_ProcessCompleted; // Register event handler
28bl.StartProcess();
29}
3031// Event handler
32public static void bl_ProcessCompleted()
33
{
34Console.WriteLine(Process Completed!);
35}
36
} 6. Lambda 表达式 关键词 lambda Lambda 表达式提供了一种表示方法的简单方法在 LINQ 查询和定义短内联函数时特别有用。此功能允许开发人员在执行简单操作时消除对传统方法定义的需求从而编写可读的代码。Lambda 表达式使 Lambda 表达式成为开发人员在使用 C# 时的宝贵工具从而提高了代码的清晰度和效率。 例 C# 1
Funcint, int, int add (x, y) x y;
23
int result add(3, 4); // result is 7 7. 可为 null 的类型 关键词? 在 C# 中可以为 null 的类型也允许值类型具有状态。当您使用可能具有值的数据库或数据源时这会派上用场。在值类型后添加 a 有助于开发人员处理数据可能丢失或未定义的情况。这样可以防止在代码运行时导致潜在错误。此功能提供了一种清晰直接的方式来处理可选或缺失的数据从而使应用程序更加可靠。nullnull? 例 C# 1
int? num null;
2
if (num.HasValue)
3
{
4Console.WriteLine($Number: {num.Value});
5
}
6
else
7
{
8Console.WriteLine(No value assigned.);
9
} 8. 模式匹配 关键词 switchcase 模式匹配是 C# 7.0 中引入的另一个有用功能然后在该语言的后续版本中进行了一系列改进。模式匹配需要一个表达式它有助于测试它是否符合特定条件。我们可以以易于阅读的紧凑方式编写代码而不是冗长的语句。在下面的示例中我使用了我赋值的地方数据类型然后使用模式匹配来打印它是什么数据类型。if-elseobject5int 例 C# 1
object obj 5;
23
if (obj is int i)
4
{
5Console.WriteLine($Integer: {i});
6
}
7
switch (obj)
8
{
9case int j:
10Console.WriteLine($Integer: {j});
11break;
12case string s:
13Console.WriteLine($String: {s});
14break;
15default:
16Console.WriteLine(Unknown type.);
17break;
18
} 9. 扩展方式 关键词在方法签名中this 扩展方法允许开发人员在不更改其原始代码的情况下向现有类型添加新方法。这些方法是静态的但工作方式类似于扩展类型的实例方法提供了一种流畅的方式来添加新功能。扩展方法使代码更加模块化和可重用使开发人员能够从库外部扩展类型而不会弄乱原始代码。扩展方法还支持“开放/封闭”原则这意味着代码对扩展是开放的但对修改是封闭的。 例 C# 1
public static class StringExtensions
2
{
3public static bool IsNullOrEmpty(this string value)
4
{
5return string.IsNullOrEmpty(value);
6}
7
}
89
// Usage
10
string str null;
11
bool result str.IsNullOrEmpty(); // result is true 10. 元组 关键词tuple 元组允许您将多个值分组为一个单元。当您想要从方法发回多个值而不使用参数或仅为了在对象之间传输数据而创建新类时它们会有所帮助。使用元组您可以打包并返回一组相关值这使我们的代码更易于阅读和理解。您可以为元组中的字段命名也可以不命名它们。然后使用 和 引用值如下所示。Item1Item2 例 C# 1
public (int, string) GetPerson()
2
{
3return (1, John Doe);
4
}
56
// Usage
7
var person GetPerson();
8
Console.WriteLine($ID: {person.Item1}, Name: {person.Item2}); 结论 通过使用 / 来很好地处理任务使用 LINQ 来获取数据保证数据安全确保类型正确对于对事件做出反应的程序使用 Lambda 表达式来编写短函数使用 null 类型来处理缺失的信息使用 Pattern Matching 来使代码更清晰并说得更多使用 Extension 方法添加新功能 和元组 为了更好地组织数据您可以编写更易于管理且不太可能中断的代码。