我的实现有什么问题:c# 扩展方法

发布于 2024-08-09 07:47:44 字数 857 浏览 7 评论 0原文

来源抛出错误:

'nn.asdf' does not contain a definition for 'extension_testmethod'

我真的不明白为什么......

using System.Linq;
using System.Text;
using System;

namespace nn
{
    public class asdf
    {
        public void testmethod()
        {
        }
    }
}
namespace nn_extension
{
    using nn;
    //Extension methods must be defined in a static class
    public static class asdf_extension
    {
        // This is the extension method.
        public static void extension_testmethod(this asdf str)
        {
        }
    }
}
namespace Extension_Methods_Simple
{
    //Import the extension method namespace.
    using nn;
    using nn_extension;
    class Program
    {
        static void Main(string[] args)
        {
            asdf.extension_testmethod();
        }
    }
}

有什么想法吗?

the source is throwing the error:

'nn.asdf' does not contain a definition for 'extension_testmethod'

and i really don't unterstand why...

using System.Linq;
using System.Text;
using System;

namespace nn
{
    public class asdf
    {
        public void testmethod()
        {
        }
    }
}
namespace nn_extension
{
    using nn;
    //Extension methods must be defined in a static class
    public static class asdf_extension
    {
        // This is the extension method.
        public static void extension_testmethod(this asdf str)
        {
        }
    }
}
namespace Extension_Methods_Simple
{
    //Import the extension method namespace.
    using nn;
    using nn_extension;
    class Program
    {
        static void Main(string[] args)
        {
            asdf.extension_testmethod();
        }
    }
}

any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

樱花细雨 2024-08-16 07:47:44

扩展方法是一种静态方法,其行为类似于所扩展类型的实例方法,也就是说,您可以在 asdf 类型的对象实例上调用它。您不能将其视为扩展类型的静态方法来调用。

将您的 Main 更改为:

asdf a = new asdf();
a.extension_testmethod();

当然,您始终可以像调用声明类型的简单、静态、非扩展方法(>asdf_extension):

asdf_extension.extension_testmethod(null);

An extension method is a static method that behaves like an instance method for the type being extended, that is, you can call it on an instance of an object of type asdf. You can't call it as if it were a static method of the extended type.

Change your Main to:

asdf a = new asdf();
a.extension_testmethod();

Of course, you can always call like a simple, static, non-extension method of the declaring type (asdf_extension):

asdf_extension.extension_testmethod(null);
百善笑为先 2024-08-16 07:47:44

扩展方法适用于类实例:

var instance = new asdf();
instance.extension_testmethod();

Extension methods apply to class instances:

var instance = new asdf();
instance.extension_testmethod();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文