我已在公共类下面声明,以便我可以在我的例程中返回多个数据类型:
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”吗?
答案 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