Непредвиденный знак $

492
25 февраля 2017, 03:01
using System;
using System.Runtime.InteropServices;
namespace TimeTest
{
    class Program
    {
        static void Main(string[] args)
        {
            SYSTEMTIME t;
            GetLocalTime(out t);
            Console.WriteLine($"{t.wYear}/{t.wMonth}/{t.wDay} {t.wHour}:{t.wMinute}:{t.wSecond}");
        }
        [DllImport("kernel32.dll")]
        static extern void GetLocalTime(out SYSTEMTIME lpSystemTime);
    }
    [StructLayout(LayoutKind.Sequential, Pack = 2)]
    struct SYSTEMTIME
    {
        public ushort wYear;
        public ushort wMonth;
        public ushort wDayOfWeek;
        public ushort wDay;
        public ushort wHour;
        public ushort wMinute;
        public ushort wSecond;
        public ushort wMilliseconds;
    }
}

При компиляции выдаёт ошибку в коде: Console.WriteLine - Непредвиденный знак $

В чём его особенность?

И как его использовать?

На данный момент тестировал на Net.4.0

Answer 1

Это нововведение C#6 называется "интерполяция строк".

Этот символ позволяет указывать переменные, окруженные фигурными скобками, прямо в строках без использования конкатенации или форматирования.

Например, вместо того, чтобы писать:

Console.WriteLine(String.Format("{0}/{1}/{2} {3}:{4}:{5}", 
    t.wYear, t.wMonth, t.wDay, t.wHour, t.wMinute, t.wSecond));

или

Console.WriteLine(t.wYear + "/" + t.wMonth + "/" + t.wDay + " " + t.wHour + ":" + t.wMinute + ":" + t.wSecond);

Гораздо читабельнее выглядит так:

Console.WriteLine($"{t.wYear}/{t.wMonth}/{t.wDay} {t.wHour}:{t.wMinute}:{t.wSecond}");

Интерполяция строк была введена в версии C#6.

Если у Вас данная запись не проходит проверку синтаксиса, попробуйте обновиться до Visual Studio 2015.

Также рекомендую почитать статью на MSDN: https://msdn.microsoft.com/ru-ru/library/dn961160.aspx

READ ALSO
Как получить файл через socket в UWP(Windows 10)

Как получить файл через socket в UWP(Windows 10)

Программа по передаче файлов с помощью сокетов и TCP/IPВ документации Microsoft нашёл рабочий пример получения сообщения

243
Узнать запущен ли процесс по PID

Узнать запущен ли процесс по PID

Есть консольный скрипт (1), который при запуске пишет в базу свой PID полученный функцией getmypid()

431
Как оптимизировать код php/mysql?

Как оптимизировать код php/mysql?

Как можно оптимизировать код, представленный ниже?

389
Асинхронные запросы PHP

Асинхронные запросы PHP

Подскажите как лучше организовать асинхронные запросы в PHP?

460