2015-11-24 3 views
0

Есть ли способ написать отдельно стоящую функцию в C#? Мне нужна функция, но я не считаю его членом любого существующего class, и я не вижу смысла писатьЧто делать, если я хочу отдельно стоящую функцию?

public abstract class HolderForFunctionsThatIDontKnowWhereElseToPut 
{ 
    MyReturnType MyFuction (...) { ... } 
} 
+0

У вас не может быть статического абстрактного класса. Тем не менее, вы можете иметь статический класс со статическими методами – KiwiPiet

+3

Из того, что я видел, люди обычно помещают их в классы с именем 'Utils' или' Utilities'. Но прежде чем это сделать, я сначала задаюсь вопросом, почему этот метод не подходит в моей нынешней архитектуре, похоже на запах кода. –

+2

.Net - это объектно-ориентированный язык программирования. То, о чем вы просите, - это концепция процедурного программирования. –

ответ

4

Нет, вы не можете иметь функцию без класса/структуры.

У вас может быть только функция (метод) внутри класса или структуры.

См: Why Doesn't C# Implement "Top Level" Methods? (Eric Lippert)

+0

Эта ссылка говорит: «Мы упрощаем рассуждать о значении неквалифицированного идентификатора, используемого в контексте вызова», но я не согласен –

+0

@SubparWebDev - Вау, если когда-либо я видел комментарий, созревший для разработки, , –

+2

@SubparWebDev И был ли вы основным разработчиком команды языка C#, когда он разрабатывался, тогда это было бы актуально. – Servy

1

Как @Habib отметил, вы действительно нуждаетесь в «контейнер» для способа, так что вы можете сделать:

public static class HolderForFunctionsThatIDontKnowWhereElseToPut 
{ 
    public static MyReturnType MyFuction (...) { ... } 
} 

И вы называете это, как это, например:

public class UseStaticMethods 
{ 
    public MyReturnType NewFuction (...) 
    { 
     ... 
     return HolderForFunctionsThatIDontKnowWhereElseToPut.MyFuction(...); 
    } 
} 
Смежные вопросы