找到 2628 篇文章 关于 C#
2K+ 阅读量
WEB API 对于更简单、更轻量级的服务来说是更好的选择。WEB API 可以使用任何文本格式,包括 XML,并且比 WCF 更快。它以 HTTP 的方式工作,使用标准的 HTTP 动词(如 GET、POST、PUT、DELETE)进行所有 CRUD 操作。对路由的完全支持使用 MediaTypeFormatter 生成 JSON 和 XML 格式的响应。它能够托管在 IIS 中,以及在 IIS 外部进行自托管。支持模型绑定和验证。支持 ODATA。支持数据的无状态传输。支持 URL 模式和 HTTP 方法。注意 - ODATA(开放数据协议)是一个开放协议,允许创建和使用… 阅读更多
176 阅读量
C# 8.0 引入了异步流,它对数据的流式源进行建模。数据流通常异步地检索或生成元素。现在,生成序列的代码可以使用 yield return 在使用 async 修饰符声明的方法中返回元素。我们可以使用 await foreach 循环使用异步流。以下语法static IEnumerable Message(){ yield return "Hello!"; yield return "Hello!"; } 可以替换为 IAsyncEnumerable static async IAsyncEnumerable MessageAsync(){ await Task.Delay(2000); yield return "Hello!"; await Task.Delay(2000); yield return "Hello!"; }示例类 Program{ public static async Task Main(){ ... 阅读更多
78 阅读量
^ 运算符 - 它被称为从末尾开始的索引运算符。它返回相对于序列或集合末尾的索引。与早期方法相比,它是查找末尾元素最紧凑、最简单的方法。company.listEmployees[^2].Name = "Employee 2 Name Changed using new Syntax";company.listEmployees[^5].Name = "Employee 5 Name Changed using new Syntax";company.listEmployees[^8].Name = "Employee 8 Name Changed using new Syntax";示例public class Employee{ public int EmployeeId { get; set; } public string Name { get; set; } public string Gender { get; set; } } public class Company{ public List ... 阅读更多
1K+ 阅读量
switch 表达式在表达式上下文中提供类似 switch 的语义switch 是一个选择语句,它根据与匹配表达式的模式匹配从候选列表中选择一个 switch 部分来执行。如果单个表达式针对三个或更多条件进行测试,则 switch 语句通常用作 if-else 结构的替代方案。示例新的 switch 编写方式var message = c switch{ Fruits.Red => "The Fruits is red", Fruits.Green => "The Fruits is green", Fruits.Blue => "The Fruits is blue" };示例 1类 Program{ public enum Fruits { Red, Green, ... 阅读更多
565 阅读量
引用返回值允许方法返回对变量的引用,而不是值。然后,调用方可以选择将返回的变量视为按值或按引用返回。调用方可以创建一个新的变量,该变量本身是对返回值的引用,称为 ref 局部变量。在下面的示例中,即使我们修改了颜色,它也不会对原始数组颜色产生任何影响示例类 Program{ public static void Main(){ var colors = new[] { "blue", "green", "yellow", "orange", "pink" }; string color ... 阅读更多
367 阅读量
二进制字面量 - 在 C# 7 之前,我们只能将十进制和十六进制值分配给变量。在 C# 7.0 中引入了二进制字面量,它允许我们将二进制值赋给变量。数字分隔符 - 数字分隔符采用单个下划线 (_) 的形式。此分隔符可用于任何数字字面量中,作为提高可读性的方法。示例二进制字面量 - 示例类 Program{ public static void Main(){ var bn = 0b1000001; System.Console.WriteLine(bn.GetType()); System.Console.WriteLine(Convert.ToChar(bn)); Console.ReadLine(); } }输出System.Int32 A示例数字分隔符 - 示例类 Program{ public static void ... 阅读更多
269 阅读量
C# 7.0 在两种情况下引入了模式匹配,即 is 表达式和 switch 语句。模式测试值是否具有特定的形状,并且在值具有匹配形状时可以从中提取信息。模式匹配为算法提供了更简洁的语法您可以对任何数据类型(甚至您自己的数据类型)执行模式匹配,而使用 if/else,您始终需要基本类型进行匹配。模式匹配可以从您的表达式中提取值。在模式匹配之前 - 示例public class PI{ public const float Pi = 3.142f; } public class Rectangle : PI{ public double Width { get; set; } public double height ... 阅读更多
127 阅读量
局部函数是嵌套在另一个成员中的类型的私有方法。它们只能从其包含的成员中调用。局部函数可以在以下位置声明和调用 - 方法,尤其是迭代器方法和异步方法构造函数属性访问器事件访问器匿名方法Lambda 表达式终结器其他局部函数示例 1类 Program{ public static void Main(){ void addTwoNumbers(int a, int b){ System.Console.WriteLine(a + b); } addTwoNumbers(1, 2); Console.ReadLine(); } }输出3示例 2类 Program{ public static void Main(){ void addTwoNumbers(int a, int b, out int c){ c = a + b; } addTwoNumbers(1, 2, out int c); System.Console.WriteLine(c); Console.ReadLine(); } }输出3
167 阅读量
C# 允许在同一个程序中使用多个解构方法,这些方法具有相同数量的 out 参数,或者在不同顺序下具有相同数量和类型的 out 参数。这是新的元组语法的一部分 - 与 Tuple 类无关,而是借鉴了函数式编程。Deconstruct 关键字用于解构器示例public class Employee{ public Employee(string employeename, string firstName, string lastName){ Employeename = employeename; FirstName = firstName; LastName = lastName; } public string Employeename { get; } public string FirstName ... 阅读更多
149 次查看
我们可以将 out 值内联声明为方法参数,并在其中使用它们。此版本改进了现有的 out 参数。现在,我们可以在方法调用的参数列表中声明 out 变量,而不是编写单独的声明语句。优点 -代码更易于阅读。无需分配初始值。现有语法 -示例class Program{ public static void AddMultiplyValues(int a, int b, out int c, out int d){ c = a + b; d = a * b; } public static void Main(){ int ... 阅读更多