标签: static-binding

C#中的非虚方法,静态绑定和接口

我理解非虚方法是静态绑定的,这意味着,据我所知,它在编译时就知道哪个方法将在哪个对象上调用.该决定基于对象的静态类型.令我困惑的是接口(而不是)和静态绑定.

考虑一下这段代码

public interface IA
{
    void f();
}
public class A : IA
{
    public void f() {  Console.WriteLine("A.f()"); }
}
public class B : A 
{
    public new void f() {  Console.WriteLine("B.f()"); }
}

B b = new B();
b.f();  //calls B.f()     //Line 1

IA ia = b as IA;
ia.f(); //calls A.f()     //Line 2
Run Code Online (Sandbox Code Playgroud)

演示代码:http://ideone.com/JOVmi

我明白了Line 1.编译器可以知道b.f()将调用,B.f()因为它知道静态类型b …

c# interface non-virtual-interface static-binding

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

什么是 C 中的静态和动态绑定(严格来说是 C,而不是 C++)?

我最初担心发布这个问题以免重复。但即使在谷歌搜索了许多关键字后,我也找不到任何解释 C 的静态和动态绑定的 StackOverflow 链接。虽然有 C++ 的问题和答案,但是所有涉及的classes东西显然不适合 C。StackExchange 之外的链接非常可疑。

我需要知道这两个绑定之间的严格定义和对比,仅在 CI 的上下文中,如果您能花一些时间来回答它,或者给我 StackOverflow 上的链接,以免我弄错并已得到解答,我将不胜感激之前详细说。

我打算清楚地了解:

  1. 在 C 中绑定。
  2. C 中的静态与动态绑定。

编辑如果您能用一些简单的代码片段来解释差异,那将非常有帮助。

c dynamic-binding static-binding

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

如何使用静态方法在其父类中使用子类的静态var

我想获得在子类中重新声明的静态var的值:

    class A {

        private static $echo_var = 'PARENT_ECHO' ;

        public static function e() {
            return '$echo_var = ' . self::$echo_var ;
        }
    }

    class B extends A {

        private static $echo_var = 'CHILD_ECHO';
    }

    echo B::e();
Run Code Online (Sandbox Code Playgroud)

我想得到CHILD_ECHO.

谢谢,Mottenmann

php oop inheritance static static-binding

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

Xamarin执行OnPlatform StaticResource绑定的新方法

以前我能做到这样的事情

<OnPlatform x:TypeArguments="Color" Android="{StaticResource Primary}"/>
Run Code Online (Sandbox Code Playgroud)

现在,该语法已被弃用,我正在尝试这样做:

<OnPlatform x:TypeArguments="Color">
   <On Platform="Android">{StaticResource Primary}</On>
</OnPlatform>
Run Code Online (Sandbox Code Playgroud)

但我收到以下错误:

Cannot convert "{StaticResource Primary}" into Xamarin.Forms.Color
Run Code Online (Sandbox Code Playgroud)

我的语法应该如何?

xaml static-binding xamarin xamarin.forms

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

C++中的向量容器和静态绑定?

有人可以解释为什么i->value()(i + 1)->value()打印1和3不是1和4喜欢 x[0]->value() << x[1]->value()

#include <iostream>
#include <vector>

class A
{
public:
    A(int n = 0) : m_n(n) { }

public:
    virtual int value() const { return m_n; }
    virtual ~A() { }

protected:
    int m_n;
};

class B
    : public A
{
public:
    B(int n = 0) : A(n) { }

public:
    virtual int value() const { return m_n + 1; }
};

int main()
{
    const A a(1); //a.m_n=1
    const B b(3); …
Run Code Online (Sandbox Code Playgroud)

c++ inheritance virtual-functions vector static-binding

0
推荐指数
1
解决办法
114
查看次数