0

使用可能な場合にのみ値を返します。条件を使用して null 条件をチェックすると、例外がスローされます。「すべてのコードパスが値を返すとは限らない」

 internal PinMessage()
        {
            obj.PinsAvailable.ObserveOn(SynchronizationContext.Current).Subscribe(HandlePinsAvailable);
        }
    private void HandlePinsAvailable(byte[] pinBytes)
    {
        pinmesssage = Encoding.ASCII.GetString(pinBytes);
    }

    internal string GetPinMessage(string AccoutNumber)
    {
        string pinstring = string.Empty;
        obj.SendPinRequest(AccoutNumber);
        pinstring = pinmesssage;
        return pinstring;
    }

    private string _pinMessage;
    public string pinmesssage
    {
        get//Not all Code paths return a value
        {
            if (_pinMessage != null)
            return _pinMessage;
        }
        set { _pinMessage = value; }
    }
4

3 に答える 3

0

_pinMesSafe が null の場合は何も返さないため、このコンパイル エラーが発生します。Access から何かを返すか、それが true の場合は例外をスローする必要があります。

于 2013-08-22T21:29:17.640 に答える
0

これは「ベスト」プラクティスではありませんが、機能し、プロデューサーが変数を書き込むまでコンシューマーを待機させます。

private string _pinMessafe;
object locker = new object();

public string pinmesssage
{
    get
    {
        string x = null;
        while(x == null) {
          lock(locker) { x = _pinMessafe ; }
          Thread.Sleep(1);
        }

        return x;
    }
    set { lock(locker) { _pinMessafe = value; } }
}
于 2013-08-22T21:56:51.913 に答える