Как назначить переменную с методом .ConvertToString () в C # для анализа сообщения? - PullRequest
0 голосов
/ 21 октября 2019

Я хочу узнать, как назначить имя для вновь преобразованной строки, а затем проанализировать эту строку на основе

string[] separatingStrings = { ",", "<<", ">>" };
string[] messages = message.Split(separatingStrings);
Console.WriteLine($"{messages.Length} substrings in text:");

, приведенного ниже, содержит var message, преобразованное в строку.

Как называется строка, чтобы я мог ее проанализировать и вывести в единицу debug.log?

private void ReceiveMessageLoop()
{
    while (true)
    {
        var message = new NetMQMessage();
        if (!_socket.TryReceiveMultipartMessage(MessageCheckRate, ref message, 2)) continue;

        _messageSubject.OnNext(message);
        Console.WriteLine($"0:{message[0].ConvertToString()} 1:{message[1].ConvertToString()}");
         //Console.WriteLine(message);       
    }
}

1 Ответ

0 голосов
/ 21 октября 2019

Вы не можете объявить переменную в выражении интерполяции строки.

Console.WriteLine($"{string bar = "hello"}"); // This gives error CS1525: Invalid expression term 'string'

Таким образом, вместо этого объявите ее вне интерполяции строки, и вы можете назначить ее в выражении интерполяциис выражением присваивания.

string bar;
Console.WriteLine($"{bar = "hello"}"); // This is OK
Console.WriteLine(bar);

Ваш конкретный пример:

string msg0, msg1;
Console.WriteLine($"0:{msg0 = message[0].ConvertToString()} 1:{msg1 = message[1].ConvertToString()}");
Console.WriteLine(msg0);
Console.WriteLine(msg1);

Бонусный совет : Однако вы можете использовать out объявление переменной в выражении интерполяции. Область действия такая же, как и у линии (не как-то локально для выражения интерполяции). например:

class Program
{
    static string Test(out string x, string y) {
        return x = y;
    }

    static void Main(string[] args)
    {
        Console.WriteLine($"{Test(out string bar, "Hello")}");
        Console.WriteLine(bar);
    }
}
...