C#类声明使用多种数据类型

时间:2012-08-27 07:35:19

标签: c#

我已在公共类下面声明,以便我可以在我的例程中返回多个数据类型:

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”吗?

6 个答案:

答案 0 :(得分:3)

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

class TxRxProtocol 
{
  public static implicit operator int(TxRxProtocol t)
  {
    return t.nFlag;
  }
}

答案 1 :(得分:0)

试试这个:

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

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

您还可以将数据格式设置为b,从而将上述内容简化为:

dataformat b = TxRxProtocol();

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

答案 2 :(得分:0)

它们的类型不兼容,当然它不起作用...... 你的意思是:

 dataformat b = TxRxProtocol();

PS:你应该大写类型名称。

答案 3 :(得分:0)

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

 dataformat b = TxRxProtocol();

答案 4 :(得分:0)

应该是b = TxRxProtocol()。nFalg;

答案 5 :(得分: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