相关疑难解决方法(0)

为什么不支持C#静态类扩展方法?

我从这个问题中知道,扩展方法只能在类实例上运行,而不能在静态类本身上运行.这意味着我无法扩展有用的静态类,如ConvertMath.

我想知道的是,为什么会这样?从上面的链接,有一些关于C#团队如何实现这种功能的建议.是否有一些哲学上的理由不支持它?

例如,这里有一个理由,为什么没有内置的LINQ ForEach<T>扩展IEnumerable<T>.

c# linq language-design

56
推荐指数
2
解决办法
9332
查看次数

具有相同名称的静态和实例方法?

我在C#中有一个同时具有静态和非静态接口的类.是否可以在具有相同名称和签名的类中使用静态和非静态方法?

当我尝试这样做时,我遇到编译器错误,但出于某种原因,我认为有一种方法可以做到这一点.我错了还是没有办法在同一个类中同时使用静态和非静态方法?

如果这是不可能的,有没有一种很好的方法来实现这样的东西,可以适用于任何情况?

编辑
从我收到的回复来看,很明显没有办法做到这一点.我将使用不同的命名系统来解决这个问题.

.net c# oop

52
推荐指数
4
解决办法
2万
查看次数

C++使用非静态函数重载静态函数

我想打印两个不同的东西,这取决于一个函数是静态调用Foo::print()还是来自一个实例Foo foo; foo.print();

编辑:这是一个绝对不起作用的类定义,已经有几个人回答了.

class Foo {
    string bla;
    Foo() { bla = "nonstatic"; }

    void print() { cout << bla << endl; }
    static void print() { cout << "static" << endl; }
};
Run Code Online (Sandbox Code Playgroud)

但是,有没有一种很好的方法来实现这种效果?基本上,我想做:

if(this is a static call)
    do one thing
else
    do another thing
Run Code Online (Sandbox Code Playgroud)

换句话说,我知道PHP可以检查是否*this定义了变量,以确定是否静态调用该函数.C++是否具有相同的功能?

c++ static overloading non-static

36
推荐指数
1
解决办法
2万
查看次数

标签 统计

c# ×2

.net ×1

c++ ×1

language-design ×1

linq ×1

non-static ×1

oop ×1

overloading ×1

static ×1