【问题标题】:How to call a method from another inherited class in c# [duplicate]如何在c#中调用另一个继承类的方法[重复]
【发布时间】:2016-04-25 05:00:35
【问题描述】:

我有一个如下所示的类和方法

public class Wakeup : World
{
    public void MethodA(string)
        {
            Log.writeline("Wakeup World");
        }
}

下面是另一个类和方法,我试图在其中调用“MethodA”

public class Hello : World
{
    public void MethodB()
        {
            Wakeup p = new Wakeup;
            p.MethodA(string);
        }
}

这不起作用。无法在“MethodB”中调用“MethodA”

注意:这两个类都继承到另一个名为“World”的类

谁能建议我如何做到这一点?

【问题讨论】:

  • 您遇到的错误是什么?
  • InnerException: System.NullReferenceException: 对象引用未设置为对象的实例。
  • 您提供的示例并未反映您的实际问题(NullReferenceException)。它不会编译事件。
  • @AbdulQA 您的代码没有显示您如何获取日志实例?你能提供那个sn-p吗?

标签: c# class inheritance methods virtual-inheritance


【解决方案1】:

在第二个中正确创建第一个类的实例,并在第二个类方法调用中传递一些string value 而不是string type

 public class Wakeup : World
    {
       public void MethodA(string text)
           {
               Log.writeline(text);
           }
    }
 public class Hello : World
    {
        public void MethodB()
            {
                Wakeup p = new Wakeup();
                p.MethodA("Wakeup World");
            }
    }

【讨论】:

  • () 已正确添加。还是一样的问题。遇到异常 InnerException:System.NullReferenceException:对象引用未设置为对象的实例。
  • 查看我的更新,您必须在方法中传递一些文本,而不是仅传递字符串类型
【解决方案2】:

您有一个错字,您没有将 () 放在实例化 Wakeup 类的末尾。应该是这样的:

Wakeup p = new Wakeup();

另外,你不应该将类型本身传递给方法,换句话说,不要传递类型字string,而是传递一个字符串值。字符串值放在引号“”中,如下:“Hello, World”。

因此,您的 Class Hello 的以下代码应该可以工作。请注意我如何实例化您的 Wakeup 类,并将值传递给方法 A。这是完整的代码:

public class Wakeup : World
{
    public void MethodA(string strValue)
    {
        Console.WriteLine(strValue);
    }
}
public class Hello : World
{
    public void MethodB()
    {
        Wakeup p = new Wakeup();
        p.MethodA("Hello, World");
    }
}

【讨论】:

  • () 已正确添加。还是一样的问题。低于异常 InnerException: System.NullReferenceException: 对象引用未设置为对象的实例。
  • 看看你代码中的这一行,如果你读过我的完整答案,你会注意到我提到了这个:p.MethodA(string);您不能将字符串传递给 MethodA,您需要传递一个字符串值...还有一件事,看看我是如何声明您的 MethodA 的。复制这段代码,看看是否有效
【解决方案3】:

非常适合我

public class World { }

public class Wakeup : World
{
    public void MethodA(string a)
    {
        Console.WriteLine("Wakeup World");
    }
}
public class Hello : World
{
    public void MethodB()
    {
        Wakeup p = new Wakeup();
        p.MethodA("Dsa");
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2021-09-13
    • 2021-02-02
    • 2015-09-19
    相关资源
    最近更新 更多