Подтвердить что ты не робот

Статический импорт в С#

Есть ли у С# функция, такая как статический импорт Java?

поэтому вместо написания кода типа

FileHelper.ExtractSimpleFileName(file)

Я мог написать

ExtractSimpleFileName(file)

и компилятор знал бы, что я имею в виду метод из FileHelper.

4b9b3361

Ответ 1

Начиная с С# 6.0, это возможно:

using static FileHelper;

// in a member
ExtractSimpleFileName(file)

Однако предыдущие версии С# не имеют статического импорта.

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

using FH = namespace.FileHelper;

// in a member
FH.ExtractSimpleFileName(file)

Альтернативно, измените статический метод на метод расширения по типу - вы могли бы назвать его как:

var value = file.ExtractSimpleFileName();

Ответ 2

Нет, такая функция не существует в С#. Вам нужно указать класс, к которому принадлежит статический метод, если вы уже не находитесь внутри метода этого же класса.

В С#, хотя у вас есть методы расширения, которые подражают этому.

Ответ 3

Время идет... похоже, что в следующей версии С# может получить статический импорт, см. Http://msdn.microsoft.com/en-us/magazine/dn683793.aspx для предварительного просмотра.

using System;
using System.Console; // using the Console class here

public class Program
{
    public static void Main()
    {
        // Console.WriteLine is called here
        WriteLine("Hello world!");
    }
}

В официальной документации для компилятора Roslyn С# эта функция указана как выполненная.

Ответ 4

С# 6.0 в платформе Roslyn поддерживает статический импорт. Он требует выражения типа:

using static System.Console;

поэтому код может выглядеть так:

using static System.Console;
namespace TestApplication
{
    class Program
    {
        static void Main(string[] args)
        {
            WriteLine("My test message");
        }
    }
}

Ранее запланированная версия для С# 6.0 имела статический импорт без ключевого слова static.

Для других новых функций в С# 6.0 см. Новые языковые функции на С# 6