找到 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 = (水果)(新随机数())。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(); dynamic 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 对象(); 静态整数总计;公共静态 void Main() { AddOneHundredLock(); Console.ReadLine(); } 公共静态 void AddOneHundredLock() { 对于 (int i = 1; i

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

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

467 次浏览

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

如何在 C# 中使用 LINQ 和 Lambda 进行连接?

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

9K+ 次浏览

内部连接仅返回两个表中匹配或存在的记录或行。我们还可以根据如下所示的条件将连接应用于多个表。如果我们需要将连接应用于多个条件,请使用匿名类型。在下面的示例中,我们编写了两种可以使用 Linq 进行连接的方法,这里连接了 Department 和 Employee示例类程序 { 静态 void Main(字符串[] 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(字符串[] 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 代到指定代的垃圾。示例实时演示使用系统;类 MyGCCollectClass { 私有 const 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

广告