-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 が整数ではないというエラーが発生しました。

nFlag 整数型だけでなく、複数の型の値 (文字列型を含む) を返すことができるように、TxRxProtocol() ルーチンをどのように記述すればよいでしょうか? 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 に答える