2013-10-14 3 views
0

В C/C++ я могу создать файл и поместить все функции в этот файл.Как я могу поместить функции в другой файл cs?

lib.h

void plus(int i, int j); 

lib.cpp

#include "lib.h" 

void plus(int i, int j) 
{ 
    printf("%d\n", i+j); 
} 

main.cpp

#include "lib.h" 
main() 
{ 
    plus(1, 2); 
} 

Но в C# Как я могу поместить FUNC в другом файле cs и включить его в main.cs?

+2

Почему вы так хотите? – Yuan

ответ

2

Прежде всего, вы не должны этого делать. В мире C/C++ это делается потому, что вы не можете использовать функции, объявленные позже в программе.

Также файлы заголовков служат интерфейсом для разделяемых библиотек на вашей ОС или у какого-либо поставщика.

Итак, что говорит @Tigran, это эквивалент того же принципала в C#. Вы объявляете итерал.

Если вы действительно хотите, чтобы делать то, что вы просите в буквальном смысле вы могли бы использовать частичные функции. Я помещаю его здесь для всех, кто интересуется. Цель, для которой он был разработан, отличается от C/C++, поэтому вам нужно будет оценить, действительно ли вы хотите это сделать, я думаю, что вы этого не делаете.

Вы можете сделать это, see msdn for more:

namespace PM 
{ 
    partial class A 
    { 
     partial void OnSomethingHappened(string s); 
    } 

    // This part can be in a separate file. 
    partial class A 
    { 
     // Comment out this method and the program 
     // will still compile. 
     partial void OnSomethingHappened(String s) 
     { 
      Console.WriteLine("Something happened: {0}", s); 
     } 
    } 
} 
+0

единственный ответ, который на самом деле что хотел OP, даже если это не обычное дело в C#. – tenpn

+0

@tenpn То, что кто-то хочет и что действительно нужно кому-то, часто отличается. ОП не объяснил, почему он этого хочет, поэтому мы можем предположить, что он просто хочет этого, потому что так оно и было в C/C++. Все другие ответы более уместны, чем этот. Но я узнал что-то новое из этого, поэтому я не жалуюсь. – Dialecticus

+0

@Dialecticus вы можете предположить, что, но вы можете ошибаться! Лучше всего делать то, что сделал здесь гидеон - «это не лучшая практика, но вот как ...» Информативно как в том, как это должно быть сделано, так и в эзотерических способах растянуть язык. – tenpn

0

Если вы хотите следовать те же проблемы, как и в C++ (по некоторым причинам) в C# для достижения этой цели является объявить (скажем) interface в одном файле и его реализации в другой, но в основном в вашем случае я бы предположить вас не нужно, что вы в основном нужно:

  • объявить класс в одном файле
  • Instantiate в main.cs файл
  • использовать его

Существует много других аспектов C#, которые могут показаться вам знакомыми, как разработчик C++, поэтому я бы предложил немного изучить его.

+0

отредактировал: main.css to main.cs – Ritesh

+0

@Ritesh: да, спасибо :) недавно я на 80% занимаюсь веб-разработкой, так что это результат :) – Tigran

+0

Я догадался, что он хе-хе :) – Ritesh

1

Вы не делаете это так в C#.

В C#, прежде всего, обратите внимание, что ВСЕ функции (называемые методами в C#) должны быть в классе. Вы не можете заставить их плавать вокруг голых, как на C++.

Во-вторых, для доступа к C# класс, который определен в другом файле «.cs»:

  • Если класс определен в другой сборки (т.е.это в другой DLL), то вы должны добавить в свой проект ссылку на эту сборку.
  • Тогда, если пространство имен, которое содержит этот класс, совпадает с пространством имен для класса, который должен использовать этот метод, вам больше не нужно ничего делать.
  • В противном случае в верхней части файла исходного кода вы должны поместить using directive, который указывает пространство имен, которое содержит необходимый вам класс. Кроме того, вы можете указать полное пространство имен в самом вызове метода.

Обратите внимание, что использовать метод, вы должны либо создать экземпляр экземпляр содержащего класса, или этот метод должен быть статическим, и вы к нему доступ с помощью ClassName.MethodName() синтаксиса.

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