-4

我已经在公共类下面声明了,这样我就可以在我的例程中返回多种数据类型:

public class dataformat
{
    public int nFlag;
    public String strCommand;
    public String strData;
}

下面是我想将整数 nFlag 返回给 b 时使用的编码:

    public dataformat TxRxProtocol()
    {
        int a;
        dataformat df = new dataformat();

        // coding
        // coding
        // coding
        if (a==0) df.nFlag = 1;
        if (a==1) df.nFlag = 2;

        return df;
     }

我努力了:

  dataformat b = TxRxProtocol();
  if (b==0) // a condition
  else if (b==1) // a condition

但得到错误说明 b 不是整数。

我们如何在 TxRxProtocol() 例程中编写,以便它可以返回多种类型的值(包括字符串类型)而不仅仅是 nFlag 整数类型?是我们必须在其中添加 df.strCommand = "Something" 或 df.strData = "Something" 吗?

4

6 回答 6

3

您可以使用隐式转换运算符:

class TxRxProtocol 
{
  public static implicit operator int(TxRxProtocol t)
  {
    return t.nFlag;
  }
}
于 2012-08-27T07:42:38.677 回答
0

尝试这个:

 int b = 0;
 dataformat ret = TxRxProtocol();
 b = ret.nFlag;

编译器是对的。它告诉您您正在尝试将数据格式(返回的数据)分配给变量 b(在 int 中)

您还可以制作 ba 数据格式类型,将上述内容简化为:

dataformat b = TxRxProtocol();

当然,“b”的使用取决于你在做什么。

于 2012-08-27T07:37:40.427 回答
0

他们的类型不兼容,当然不行……你的意思是:

 dataformat b = TxRxProtocol();

PS:您应该将类​​型名称大写。

于 2012-08-27T07:38:40.660 回答
0

变量b必须是 的类型dataformat,所以这里有一个示例:

 dataformat b = TxRxProtocol();
于 2012-08-27T07:38:40.927 回答
0

它应该是 b = TxRxProtocol().nFalg;

于 2012-08-27T07:40:14.497 回答
0

而不是这个

dataformat b = TxRxProtocol();
if (b==0) // a condition
else if (b==1) // a condition

试试下面

dataformat b = TxRxProtocol();
if (b.nflag==0) // a condition
else if (b.nflag==1) // a condition
于 2018-06-19T17:32:54.553 回答