扩展内置类






1.88/5 (5投票s)
如何扩展内置类。
引言
您是否曾经需要一个方法,但在类中找不到?您是否梦想可以将此功能添加到内置类中?现在可以通过 .Net Framework 3.5 实现。 您可以通过直接添加您想要的函数来扩展您想要的任何类,而无需继承。
使用代码
为了演示如何做到这一点。我想添加一个方法来告诉我一个字符串在另一个字符串中重复了多少次。例如,'o' 在 "How are you?" 中重复了 2 次。
让我们开始。
创建一个新项目,任何类型都可以,例如“Windows 应用程序”、“WPF”、“控制台应用程序”或“Web 应用程序”。我将选择一个 Windows 桌面应用程序。
第 1 部分:创建扩展方法。
创建项目后,添加一个新类并将其命名为“Occur.cs”。
创建类后,通过在 class 保留字前面添加 static 将该类设为静态类。
您将得到类似这样的东西
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ExtentionMethodsDemo
{
static class Occur
{
}
}
现在,我们将添加执行重复的函数。我将依赖内置的 IndexOf 方法来检测字符串重复了多少次。
public static int OccuranceOf (this string word, string SearchText) { int occur = 0; int i = -1; i = word.IndexOf(SearchText); while (i >= 0) { occur++; i = word.IndexOf(SearchText, i + 1); } return occur;
注释
1. 该方法是静态的。
2. 检查函数的第一个参数 'this',它反映了这个方法是下一个变量的扩展。
现在构建解决方案。
第 2 部分:测试函数
现在测试它是否有效。
向 Form 添加 2 个 TextBox 和一个 Button,得到类似这样的东西
用户将在第一个文本框中输入他想要搜索的文本,并在第二个文本框中输入搜索词。
现在编写 button1 的代码
检查一下,我在文本框的 text 属性(这是一个字符串)中找到了方法 OccuranceOf。
按钮的完整代码如下
private void button1_Click (object sender, EventArgs e)
{
int x = textBox1.Text.OccuranceOf(textBox2.Text);
MessageBox.Show("'" + textBox2.Text + "' occured " + x.ToString() + " times in the text");
}
通过在第一个文本框中输入 "How are you?" 并在第二个文本框中输入 "o" 来测试应用程序时,我收到了类似这样的消息
结论
感谢 Microsoft 的这项功能,它将节省许多程序员的时间。
历史
在此处保持您所做的任何更改或改进的实时更新。