适合每位开发人员的 60 个 C# 代码片段


适合每位开发人员的 60 个 C# 代码片段

文章插图
 
嘿! 今天,我有一些特别的东西要与大家分享 - 60 个 C# 代码片段的汇编,我发现它们对我自己的工作非常有帮助 。
在本文中,我们不仅要了解这些片段如何解决日常编程问题,还要了解它们为何如此工作 。这是为了建立更深入的理解,而不仅仅是快速复制粘贴工作 。
如果您一直在使用 C# 并且曾经发现自己陷入问题,不确定如何有效地解决它,那么这些片段适合您 。如果您对 C# 比较陌生并且正在尝试了解如何更有效地使用该语言,那么它们也适合您 。
好了,说够了 。让我们一起开始探索这些代码片段 。我希望你发现它们和我一样有用 。
在我们继续之前,在提供的示例中,我尝试添加一点幽默感并列出一些用例 。希望这也能让你开心,因为至少我总是更容易记住有趣的事情:)让我们开始吧!
10 个复杂的所有类型片段1. 二分查找public int BinarySearch(int[] arr, int target){int left = 0;int right = arr.Length - 1;while (left <= right){int mid = left + (right - left) / 2;if (arr[mid] == target)return mid;if (arr[mid] < target)left = mid + 1;elseright = mid - 1;}return -1;}将此代码视为搜索方法中的福尔摩斯 。您知道,与其浪费时间到处寻找特定的物品,不如直接切入正题不是很好吗? 这正是二分查找的作用——它通过划分和征服来节省你的时间(和理智)!
用例:
在已排序的用户列表中搜索特定用户
在已排序的图书馆数据库中查找特定的书籍
2. 冒泡排序public void BubbleSort(int[] arr){int len = arr.Length;for (int i = 0; i < len - 1; i++)for (int j = 0; j < len - i - 1; j++)if (arr[j] > arr[j + 1]){int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}就像你有时把所有衣服扔到空中然后排列它们一样(来吧,我们都会这样做,对吧?),冒泡排序会随机排列数组中的数字,直到它们处于完美的顺序 。虽然这不是最快的排序,但它绝对是一个有趣的观看方式 。
用例:
按升序对排行榜分数进行排序
按价格组织产品列表
3.图上的深度优先搜索(DFS)public void DFS(int v, bool[] visited, List<int>[] adj){visited[v] = true;Console.Write(v + " ");foreach (int neighbour in adj[v]){if (!visited[neighbour])DFS(neighbour, visited, adj);}}DFS就像那个朋友,当你们一起去徒步旅行时,只需探索每一个角落 。在考虑尝试一条新道路之前,它会尽可能深入地探索一条道路 。当您需要对图表的所有节点进行彻底、全面的搜索时,请使用它 。
用例:
在迷宫中寻找路径
分析网络连接
4. 斐波那契数列 
public void PrintFibonacci(int n){int a = 0, b = 1, c;for(int i = 0; i < n; i++){Console.Write(a + " ");c = a + b;a = b;b = c;}}想要享受一些优雅的数字吗? 斐波那契数列就像数字的交响曲,每个数字都是前两个数字的和谐融合 。此代码片段可帮助您生成由“n”项组成的斐波那契数列 。
用例:
解决数学中与递归序列相关的问题
在与搜索和排序甚至密码学相关的算法中
5. 阶乘计算public int Factorial(int n){if (n == 0)return 1;elsereturn n * Factorial(n - 1);}还记得你以为自己可以吃无数块饼干,然后意识到自己可能吃不完 10 块吗? 嗯,阶乘有点像这样——它们涉及将所有正整数乘以某个数字,并且它们很快就会变大! 当您需要计算阶乘时,请使用此代码片段 。
用例:
在计算统计组合和排列时
用于某些搜索和查询优化算法
6. 矩阵乘法public int[,] MultiplyMatrix(int[,] a, int[,] b){int[,] result = new int[a.GetLength(0),b.GetLength(1)];for (int i = 0; i < result.GetLength(0); i++){for (int j = 0; j < result.GetLength(1); j++){result[i, j] = 0;for (int k = 0; k < a.GetLength(1); k++) // or k<b.GetLength(0)result[i, j] += a[i, k] * b[k, j];}}return result;}矩阵乘法就像一个聚会,其中第一个矩阵的每一行都与第二个矩阵的每一列混合在一起 。结果呢? 一个全新的矩阵,其元素是根据乘法对的总和创建的 。因此,当您希望矩阵举办派对时,此片段将成为您的 DJ!
用例:
在计算机图形学中将 3D 对象转换为不同的比例或位置
用数值方法求解线性方程组
7. 回文检查器public bool IsPalindrome(string str){str = str.ToLower();int i = 0, j = str.Length - 1;while (i < j){if (str[i++] != str[j--])return false;}return true;}如果您不确定某个单词或短语是否是秘密回文,此功能可以为您提供支持 。


推荐阅读