C# C创建一个只对我的类数组有效的方法

C# C创建一个只对我的类数组有效的方法,c#,arrays,C#,Arrays,假设我有一个foo班和另一个酒吧。我想在foo类中创建一个方法,将foo数组转换为非数组的bar对象,如下所示: foo[] v1 = new foo[] { }; bar v2 = v1.ToBar(); 我怎么做呢?你可以使用 扩展方法使您能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被调用时就像它们是扩展类型上的实例方法一样。对于用C和Visual Basic编写的客户机代码,调用扩展方法和在类型中实际定义的方法之间

假设我有一个foo班和另一个酒吧。我想在foo类中创建一个方法,将foo数组转换为非数组的bar对象,如下所示:

foo[] v1 = new foo[] { };
bar v2 = v1.ToBar();
我怎么做呢?

你可以使用

扩展方法使您能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被调用时就像它们是扩展类型上的实例方法一样。对于用C和Visual Basic编写的客户机代码,调用扩展方法和在类型中实际定义的方法之间没有明显的区别

您只需要一个公共静态类来保存扩展方法。注意第一个方法参数之前的这一点-这就是它成为扩展方法的原因

public static class FooExtensions
{ 
    public static Bar ToBar(this Foo[] source)
    {
        return new Bar();  // replace with correct logic;
    }
}
你可以使用

扩展方法使您能够向现有类型添加方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型。扩展方法是一种特殊的静态方法,但它们被调用时就像它们是扩展类型上的实例方法一样。对于用C和Visual Basic编写的客户机代码,调用扩展方法和在类型中实际定义的方法之间没有明显的区别

您只需要一个公共静态类来保存扩展方法。注意第一个方法参数之前的这一点-这就是它成为扩展方法的原因

public static class FooExtensions
{ 
    public static Bar ToBar(this Foo[] source)
    {
        return new Bar();  // replace with correct logic;
    }
}

当然,我可以使用静态方法,但我想知道我是否可以用一种更优雅的方式来实现它,因为它是一种扩展方法,您可以通过v1.ToBar运行它;“扩展方法是您能得到的最好的方法。@MauroF。您可以使用将其缩短为简单的赋值。然而,在大多数情况下,它会恶化代码的可读性,隐含性和可读性往往不喜欢。对不起,我甚至不知道什么是扩展方法,感谢你的澄清当然我可以使用静态方法,但我想知道我是否可以用一种更优雅的方式来做,因为它是一种扩展方法,你可以通过v1.ToBar运行它;“扩展方法是您能得到的最好的方法。@MauroF。您可以使用将其缩短为简单的赋值。然而,在大多数情况下,它会恶化代码的可读性,隐式性和可读性往往不喜欢。对不起,我甚至不知道什么是扩展方法,谢谢你的澄清