Есть ли у С# функция, такая как статический импорт Java?
поэтому вместо написания кода типа
FileHelper.ExtractSimpleFileName(file)
Я мог написать
ExtractSimpleFileName(file)
и компилятор знал бы, что я имею в виду метод из FileHelper.
Есть ли у С# функция, такая как статический импорт Java?
поэтому вместо написания кода типа
FileHelper.ExtractSimpleFileName(file)
Я мог написать
ExtractSimpleFileName(file)
и компилятор знал бы, что я имею в виду метод из FileHelper.
Начиная с С# 6.0, это возможно:
using static FileHelper;
// in a member
ExtractSimpleFileName(file)
Однако предыдущие версии С# не имеют статического импорта.
Вы можете приблизиться к псевдониму для типа.
using FH = namespace.FileHelper;
// in a member
FH.ExtractSimpleFileName(file)
Альтернативно, измените статический метод на метод расширения по типу - вы могли бы назвать его как:
var value = file.ExtractSimpleFileName();
Нет, такая функция не существует в С#. Вам нужно указать класс, к которому принадлежит статический метод, если вы уже не находитесь внутри метода этого же класса.
В С#, хотя у вас есть методы расширения, которые подражают этому.
Время идет... похоже, что в следующей версии С# может получить статический импорт, см. 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 С# эта функция указана как выполненная.
С# 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