找到 2628 篇文章 关于 C#

在 C# 中使用 if/else 和 switch-case 的区别是什么?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:43:48

346 次查看

Switch 是一种选择语句,它根据与匹配表达式的模式匹配,从候选列表中选择一个 switch 部分来执行。如果单个表达式针对三个或更多条件进行测试,switch 语句通常用作 if-else 结构的替代方案。Switch 语句更快。在 switch 语句中,无论有多少不同的情况,平均比较次数都将为 1,因此任意情况的查找为 O(1)使用 Switch - 示例类程序{ 公共枚举水果 { 红色,绿色,蓝色 } 公共静态 void Main(){ 水果 c = (水果)(新 Random()).Next(0,... 阅读更多

如何在 C# 中的匿名类中实现接口?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:39:59

2K+ 次查看

不,匿名类型无法实现接口。我们需要创建您自己的类型。匿名类型提供了一种方便的方法,可以将一组只读属性封装到单个对象中,而无需首先显式定义类型。类型名称由编译器生成,在源代码级别不可用。每个属性的类型由编译器推断。您可以使用 new 运算符和对象初始化器来创建匿名类型。示例类程序{ 公共静态 void Main(){ var v = new { Amount = 108, Message = "Test" }; ... 阅读更多

如何在 C# 中编写重试逻辑?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:38:37

1K+ 次查看

每当出现失败操作时,都会实现重试逻辑。仅在失败操作的完整上下文中实现重试逻辑。记录导致重试的所有连接故障非常重要,以便可以识别应用程序、服务或资源的底层问题。示例类程序{ 公共静态 void Main(){ HttpClient client = new HttpClient(); 动态 res = null; var retryAttempts = 3; var delay = TimeSpan.FromSeconds(2); RetryHelper.Retry(retryAttempts, delay, () =>{ res = client.GetAsync("https://example22.com/api/cycles/1"); }); ... 阅读更多

C# 中 Monitor 和 Lock 的区别是什么?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:36:43

2K+ 次查看

Monitor 和 lock 都提供了一种同步对对象访问的机制。lock 是 Monitor.Enter 的快捷方式,带有 try 和 finally。Lock 是一个快捷方式,它是基本用法的选择。如果我们需要更多控制来使用 TryEnter() Wait()、Pulse() 和 PulseAll() 方法实现高级多线程解决方案,那么 Montior 类就是您的选择。Lock 示例 - 示例类程序{ 静态对象 _lock = new 对象(); 静态 int 总计;公共静态 void Main(){ AddOneHundredLock(); Console.ReadLine(); } 公共静态 void AddOneHundredLock(){ for (int i = 1; i

如何在 C# 中使用 Comparison 委托对复杂类型的列表进行排序?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:32:43

467 次查看

List 类中 Sort() 方法的重载期望将 Comparison 委托作为参数传递。public void Sort(Comparison comparison)CompareTo 返回一个整数,该整数指示此实例的值小于、等于还是大于指定对象或另一个 Int16 实例的值。C# 中的 Int16.CompareTo() 方法用于将此实例与指定对象或另一个 Int16 实例进行比较示例类程序{ 公共静态 void Main(){ Employee Employee1 = new Employee(){ ID = 101, Name = "Mark", ... 阅读更多

如何在 C# 中使用 LINQ 和 Lambda 使用 Join?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:30:09

9K+ 次查看

内部联接仅返回在两个表中都匹配或存在的那些记录或行。我们还可以根据如下所示的条件将内部联接应用于多个表。如果我们需要将内部联接应用于多个条件,请使用匿名类型。在下面的示例中,我们编写了两种可以使用 Linq 进行联接的方法。此处联接了 Department 和 Employee示例类程序{ 静态 void Main(string[] args){ var result = Employee.GetAllEmployees().Join(Department.GetAllDepartments(), e => e.DepartmentID, d => d.ID, (employee, department) ... 阅读更多

C# 中用于调试与发布的 if/then 指令是什么?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:27:28

2K+ 次查看

在 Visual Studio 中,调试模式和发布模式是构建 .Net 项目的不同配置。选择调试模式以逐步调试其 .Net 项目,选择发布模式以最终构建程序集文件(.dll 或 .exe)。要更改构建配置 - 从“构建”菜单中,选择“配置管理器”,然后选择“调试”或“发布”。或者在工具栏上,从“解决方案配置”列表中选择“调试”或“发布”。写在 #if debug 内部的代码只有在代码在调试模式下运行时才会执行。如果代码在发布版中运行... 阅读更多

如何在 C# 中获取 Unix 时间戳

Nizamuddin Siddiqui
更新于 2020年8月19日 13:26:03

6K+ 次查看

Unix 时间戳主要用于 Unix 操作系统。但它对所有操作系统都有帮助,因为它表示所有时区的时间。Unix 时间戳以秒为单位表示时间。Unix 纪元始于 1970 年 1 月 1 日。因此,Unix 时间戳是在特定日期之间的秒数示例使用 DateTime.Now.Subtract().TotalSeconds 方法获取 Unix 时间戳类程序{ 静态 void Main(string[] args){ Int32 unixTimestamp = (Int32)(DateTime.Now.Subtract(new DateTime(1970, 1, 1))).TotalSeconds; Console.WriteLine("Unix 时间戳为 {0}", unixTimestamp); Console.ReadLine(); } }输出 1596837896示例使用 DateTimeOffset.Now.ToUnixTimeSeconds() ... 阅读更多

如何在 C# 中强制进行垃圾回收?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:24:11

2K+ 次查看

是的,可以通过调用 Collect() 方法来强制 C# 中的垃圾回收器运行这不被认为是好的做法,因为这可能会导致性能开销。Collect() 强制立即进行所有世代的垃圾回收。Collect(Int32)强制立即从第 0 代到指定代进行垃圾回收。示例实时演示使用 System;类 MyGCCollectClass{ 私有常量 int maxGarbage = 1000; 静态 void Main(){ // 将一些对象放入内存。 MyGCCollectClass.MakeSomeGarbage(); Console.WriteLine("收集前使用的内存:{0:N0}", GC.GetTotalMemory(false)); // 收集所有世代的内存。 ... 阅读更多

如何在 C# 中创建具有非默认重复值的数组?

Nizamuddin Siddiqui
更新于 2020年8月19日 13:19:46

629 次查看

我们可以使用Enumerable.Repeat()创建具有非默认值的数组。它在C#中重复一个包含重复元素的集合。首先,设置要重复的元素以及重复的次数。示例1class Program{    static void Main(string[] args){       var values = Enumerable.Repeat(10, 5);       foreach (var item in values){          System.Console.WriteLine(item);       }       Console.ReadLine();    } }输出10 10 10 10 10示例2class Program{    static void Main(string[] args){       int[] values = Enumerable.Repeat(10, 5).ToArray();       foreach (var item in values){          System.Console.WriteLine(item);       }       Console.ReadLine();    } }输出10 10 10 10 10

广告