2016-11-09 3 views
0

Итак, у меня есть статический класс, который говорит, что он называется Worker, и позволяет сказать У меня есть метод внутри него, называемый Wait (float f), и все его публичные, чтобы я мог в любом месте как так:Возможно ли иметь глобальные методы в C#

Worker.Wait(1000); 

Теперь то, что мне интересно, есть ли способ я могу определить какие-то уникальные специальные методы, так что я мог бы просто сделать его коротким, как это:

Wait(1000); 

(без его в классе я бы использовал его в)?

+0

U может попробовать один взлом, создать метод определения dll на C++ и вызвать метод extern без имени класса в проекте C#. –

ответ

8

With C# 6 this can be done. В верхней части файла вам нужно добавить using static Your.Type.Name.Here;.

namespace MyNamespace 
{ 

    public static class Worker 
    { 
     public static void Wait(int msec) 
     { 
      .... 
     } 
    } 
} 

//In another file 

using static MyNamespace.Worker; 

public class Foo 
{ 
    public void Bar() 
    { 
     Wait(500); //Is the same as calling "MyNamespace.Worker.Wait(500);" here 
    } 
} 
+0

Спасибо, вам просто хочется создать небольшой скриптовый язык, и это заставляет его согреться вокруг моего сердца :) –

3

Нет, у вас не может быть методов, которые не являются частью класса на C#.

+0

Это было верно до C# 5, это можно сделать в C# 6 –

+0

@ScottChamberlain Ну даже в C# 6 они являются частью класса, это просто синтаксический сахар (как вы, конечно, знаете). – Evk

+0

@Evk Да, я знаю, но вопрос op был «* есть ли способ, каким образом я могу определить какие-то уникальные специальные методы, поэтому я мог бы просто сделать это коротко:« Подождите (1000); «*» и ответ это да, вы можете называть его таким образом в C# 6. –

3

Нет, вы не можете, методы принадлежат к классу, если Wait (1), потому что вы находитесь в классе, где определено, что метод (или является родительский класс)

Редактировать ...

Как прокомментировал это было правдой до C# 5, это может быть сделано в C# 6 теперь может быть сделано импортирования статически некоторые классы ...

взглянуть на Скотта Чемберлен "sanswer here и связь до MSDN

+0

Это было верно до C# 5, это можно сделать на C# 6 –

+0

спасибо @ScottChamberlain, спасибо за комментарий ... Я сделаю исправление, как только найду, что на MSDN, и я обязательно дам вам кредиты на это ... –

+0

2-й пример на странице https://msdn.microsoft.com/en-us/library/sf0df423.aspx –

Смежные вопросы