当前位置:  开发笔记 > 编程语言 > 正文

c#扩展方法 - 添加一个void方法

如何解决《c#扩展方法-添加一个void方法》经验,为你挑选了1个好方法。

扩展方法当然有用于将方法添加到您不拥有的类.

但我想在Visual Studio中练习这个概念,但不确定所需的符号.

例如,我有以下课程

public static class Dog
{
    public static void Bark()
    {
        Console.WriteLine("Woof!");
    }
}

让我们假设我不拥有这种方法(我这样做,但让我假装不这样做).我如何使用名为Jump的新方法(在本质上为void)扩展类,其中所有新方法都将打印到Dog跳跃的控制台?

我试图使用以下方法添加:

public static class SomeOtherClass
{
    //extension method to the Dog class
    public static Dog Jump(this Dog)
    {
        Console.WriteLine("Dog Jumped");
    }
}

但是,我收到错误:

"狗:静态类型不能用作参数"

"狗:静态类型不能用作返回类型"

你能帮我解决一下这个问题吗?



1> Stephan Baue..:

有一些问题:

    如果您想要一个不返回任何内容的方法,请不要编写一个返回以下内容的方法Dog:

public static Dog Jump(this Dog)
--------------^^^
public static void Jump(this Dog)

    您的类型参数Dog没有名称:

public static void Jump(this Dog)
------------------------------^^^  
public static void Jump(this Dog dog)

    最重要的是:
    扩展方法只是某种"语法糖",所以你可以写myDog.Jump();而不是SomeOtherClass.Jump(myDog);.
    这意味着您需要传递给扩展方法的类的实例.您不能在(例如Dog.Jump();)上调用扩展方法,而只能在对象(例如myDog.Jump();)上调用.这就是扩展方法的工作原理.
    此外,您的类Dog是静态的,这意味着您无法创建它的实例,因此您将无法调用Dog myDog = new Dog();,因此无法在其上调用扩展方法.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有