扩展文件类C#的矛盾

问题描述 投票:0回答:1

我在MS文档中发现了矛盾,它说你可以扩展它,但在很多stackoverflow线程中我发现你无法扩展它,因为它是静态类。 VS 社区也不让我编译我的代码,因为 File 是静态类型,不能用作参数。

请从文档中向我解释这部分:

其他示例可能是向 System.String 类添加通用功能,扩展 System.IO.File 和 System.IO.Stream 对象的数据处理功能,以及用于特定错误处理功能的 System.Exception 对象。这些类型的用例仅受您的想象力和良好判断力的限制。

我的测试代码:

  • 我的扩展类:
public static string ExtendFileClass(this File value)
{
    return value.ToString();
}
c#
1个回答
0
投票

文档中没有错误,您应该在整个上下文中阅读该部分:

但是我们可以扩展 System.Data.SqlClient.SqlConnection 类使用扩展方法从我们的任何地方执行该查询 有到 SQL Server 的连接。其他示例可能是添加 System.String 类的通用功能,扩展数据 处理[...]

所以这部分的重点是解释你可以使用扩展方法来扩展

System.String
类,如下所示:

public static class StringExtensions
{
    public static string MyCustomStringMethod(this String self)
    {
        return self + "anything";
    }
}

然后你可以在你的类(我的示例中的

StringExtensions
)可用的任何地方使用此方法:

using System;
                    
public class Program
{
    public static void Main()
    {
        Console.WriteLine("Hello World".MyCustomStringMethod());
    }
}

编辑:这里不要关注

System.String
,重点是你可以使用扩展方法“扩展”任何类型,无论是否密封。在文档的上下文中,继承是一种可扩展性,扩展方法是另一种,您也可以使用它。这是两种可扩展性,好的一种取决于具体情况(如文档中所解释的)。

© www.soinside.com 2019 - 2024. All rights reserved.