在继承接口的同一类中实现接口方法。

jrock020w

新成员
已加入
2020年5月6日
留言内容
3
编程经验
Beginner
你好,
我叫杰伊,我是新来的,这是我的第一个问题。我正在研究项目,并试图在继承该接口的同一类中实现接口方法-尝试这样做时会收到一些错误。我不确定实现该方法的正确方法是什么,并且在在线搜索此特定问题时,我找不到任何东西。这是代码:

界面:
C#:
namespace c
{
    public interface IMeasuringDevice
    {
        string PrintValues(FixedQueue<double> myCollection);
    }
}

班级:
C#:
namespace c
{
      public class Measure : IMeasuringDevice
      {
            string IMeasuringDevice.PrintValues(FixedQueue<double> myCollection)
            {
                 StringBuilder myString = new StringBuilder();
                 foreach (var i in myCollection.q)
                       myString.AppendLine(i.ToString());
                 return myString.ToString();
            }
            public string History => IMeasuringDevice.PrintValues(myQueue);[/ICODE]   //This is where Im having the problem.  Using the PrintValues method inside Measure class
      }
}

public string History => IMeasuringDevice.PrintValues(myQueue); //这是我遇到问题的地方。在Measure类中使用PrintValues方法。


-------
本质上,我只需要知道在此类中调用PrintValues方法的语法即可。非常感谢您提供的任何帮助!!!
最好的祝福,
杰伊
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,980
地点
英国
编程经验
10+
您好,欢迎来到论坛。 ;)

将代码发布到论坛时,请记住使用论坛编辑器中的代码标签按钮。我做了一个例外,这次为您添加了它们。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
您在课堂上缺少括号。
C#:
class ClassName : IFace
{
    // content of class here
}
 

jrock020w

新成员
已加入
2020年5月6日
留言内容
3
编程经验
Beginner
我在班上确实有括号,这只是代码的一小段。我遇到的具体问题是关于将接口方法实现到实现接口的类中的..语法im使用:public string History =>IMeasuringDevice.PrintValues(myQueue)< - 不管用。我100%地确定我的问题出在History方法的语法上,因为在实现接口之前,使用相同的History和PrintValues方法就可以了。因此,有关实现接口和语法im的某些事情会导致错误,该语法和im用于访问从接口继承的类内的接口方法。

希望这对您有所帮助,再次感谢您的宝贵时间!
 
Last edited:

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,980
地点
英国
编程经验
10+
周杰伦,在别人回复后,请不要编辑您的原始主题。当他们描述最初主题中不再存在的内容时,这只会使它们看起来像白痴。相反,只需回复您更新的代码即可。在查看了最初帖子的修订版之后,实际上您确实在没有大括号的情况下发布了它。

if public string History => IMeasuringDevice.PrintValues(myQueue) is giving you an error, it will also be marked with a squiggly red line. Hover your mouse and tell us what the error is on the line of code reported as defective.
 

jrock020w

新成员
已加入
2020年5月6日
留言内容
3
编程经验
Beginner
大家好,我是新来的编程人员。为了澄清起见,我提供的代码没有括号,因为我将其复制为一个片段,我只是忘了添加结尾括号,因为它是一个片段,我很抱歉..我已经弄清楚哪里出了问题…我需要实例化该类和该接口,即使我实例化该方法所在的同一类,我也觉得很奇怪。。是什么解决了我的问题:

C#:
        // History method.      
        static MeasureLengthDevice measurementDevice = new MeasureLengthDevice();
        public IMeasuringDevice measuring = measurementDevice;
        public string History => measuring.PrintValues(myQueue);

我会再次检查以查看是否有更好的方法来完成此任务,但除此之外,我还能够解决问题。谢谢
 

羊皮

退休程序员
工作人员
已加入
2018年9月5日
留言内容
1,980
地点
英国
编程经验
10+
当我们看不到您设计的数据结构时,很难给您建议。
 

约翰·H

C#论坛主持人
工作人员
已加入
2011年4月23日
留言内容
1,076
地点
挪威
编程经验
10+
Cast or use as operator:
C#:
public string History => ((IMeasuringDevice)this).PrintValues(myQueue);
C#:
public string History => (this as IMeasuringDevice).PrintValues(myQueue);
 
最佳 底部