статический импорт в c # - PullRequest
       58

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

49 голосов
/ 08 октября 2011

Имеет ли C # такую ​​функцию, как статический импорт Java?

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

FileHelper.ExtractSimpleFileName(file)

, я мог бы написать

ExtractSimpleFileName(file)

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

Ответы [ 4 ]

80 голосов
/ 08 октября 2011

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

using static FileHelper;

// in a member
ExtractSimpleFileName(file)

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

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

using FH = namespace.FileHelper;

// in a member
FH.ExtractSimpleFileName(file)

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

var value = file.ExtractSimpleFileName();
12 голосов
/ 08 октября 2011

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

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

5 голосов
/ 23 апреля 2015

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

using static System.Console;

, поэтому код может выглядеть следующим образом:

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

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

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

5 голосов
/ 08 июля 2014

Время идет ... похоже, C # может получить статический импорт в следующей версии, см. 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' C # перечисляет функцию как 'done'

...