C# 面试题 目录

C# 中扩展方法 (Extension Method) 的概念和用法

推荐答案

-- -------------------- ---- -------
-- --------
------ ------ ----- ----------------
-
    ------ ------ --- -------------- ------ ----
    -
        ------ ------------- ------ - - -- ---- --- -- ----------------------------------------------
    -
-

-- ------
----- -------
-
    ------ ---- ------------- -----
    -
        ------ -------- - ------- --- --- ------
        --- ----- - ---------------------
        ------------------------ ------ ----------
    -
-

本题详细解读

扩展方法的概念

扩展方法(Extension Method)是C#中的一种特殊方法,允许你向现有的类型“添加”方法,而无需修改原始类型的代码或创建新的派生类型。扩展方法必须是静态的,并且定义在静态类中。它们通过this关键字来指定要扩展的类型。

扩展方法的语法

扩展方法的定义语法如下:

  • ClassName:包含扩展方法的静态类。
  • MethodName:扩展方法的名称。
  • ReturnType:扩展方法的返回类型。
  • ExtendedType:要扩展的类型。
  • extendedParameter:扩展方法的第一个参数,使用this关键字修饰。
  • OtherParameters:扩展方法的其他参数。

扩展方法的使用

扩展方法的使用与实例方法类似,可以直接在扩展类型的实例上调用。例如:

在这个例子中,WordCount方法被添加到string类型中,尽管string类型本身并没有定义这个方法。

扩展方法的注意事项

  1. 静态类和静态方法:扩展方法必须定义在静态类中,并且方法本身也必须是静态的。
  2. 命名空间:扩展方法必须在命名空间中定义,使用时需要引入相应的命名空间。
  3. 优先级:如果扩展方法与实例方法同名,实例方法的优先级更高。
  4. 不可访问私有成员:扩展方法无法访问被扩展类型的私有成员。

示例代码解析

在示例代码中,我们定义了一个StringExtensions静态类,并在其中定义了一个WordCount扩展方法。该方法接受一个string类型的参数,并返回字符串中的单词数。

Main方法中,我们创建了一个字符串sentence,并调用了WordCount方法来计算字符串中的单词数。

-- -------------------- ---- -------
----- -------
-
    ------ ---- ------------- -----
    -
        ------ -------- - ------- --- --- ------
        --- ----- - ---------------------
        ------------------------ ------ ----------
    -
-

输出结果为:

这个例子展示了如何使用扩展方法为现有类型添加新的功能,而无需修改原始类型的代码。

纠错
反馈