Blu*_*ire 18 c# program-entry-point class
我对C#很新,并且已经创建了一个我想在我的主类中使用的类.usingcmd说,这两个类在不同的文件中,但当我尝试将一个类导入到另一个文件中时
找不到类型或命名空间名称"MyClass"(您是否缺少using指令或程序集引用?
我知道在Java中我不得不搞砸CLASSPATH这样的事情,但我不知道C#.
额外细节:
你可能已经想到了,我正在编译并通过命令提示符执行.我正在编译我的非主类/target:library(我听说只有主类应该是.exe文件).
我的代码看起来像这样:
public class MyClass {
void stuff() {
}
}
Run Code Online (Sandbox Code Playgroud)
和我的主要课程:
using System;
using MyClass;
public class MyMainClass {
static void Main() {
MyClass test = new MyClass();
/* Doesn't work */
}
}
Run Code Online (Sandbox Code Playgroud)
我试图用我的非主类包含namespace MyNamespace { }并导入它,但它也不起作用.
Ale*_*lex 27
using仅用于名称空间 - 如果两个类都在同一名称空间中,则只删除using.
编译.exe时,必须引用在第一步中创建的程序集:
csc /t:library /out:MyClass.dll MyClass.cs
csc /reference:MyClass.dll /t:exe /out:MyProgram.exe MyMainClass.cs
Run Code Online (Sandbox Code Playgroud)
如果只是将文件编译在一起,可以使事情更简单:
csc /t:exe /out:MyProgram.exe MyMainClass.cs MyClass.cs
Run Code Online (Sandbox Code Playgroud)
要么
csc /t:exe /out:MyProgram.exe *.cs
Run Code Online (Sandbox Code Playgroud)
编辑:这是文件应该是这样的:
MyClass.cs:
namespace MyNamespace {
public class MyClass {
void stuff() {
}
}
}
Run Code Online (Sandbox Code Playgroud)
MyMainClass.cs:
using System;
namespace MyNamespace {
public class MyMainClass {
static void Main() {
MyClass test = new MyClass();
}
}
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*nan 20
我知道这是一个非常古老的问题,但我有同样的要求,并且发现在c#6之后你可以使用静态来导入类.
我希望这可以帮助别人....
using static yourNameSpace.YourClass;
Run Code Online (Sandbox Code Playgroud)
那么您必须“导入”(使用)的是名称空间而MyClass不是类名本身。如果两个类都在同一个命名空间中,则不必“导入”它。
定义 MyClass.cs
namespace Ns1
{
public class MyClass
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
用法 AnotherClass.cs
using Ns1;
namespace AnotherNs
{
public class AnotherClass
{
public AnotherClass()
{
var myInst = new MyClass();
}
}
}
Run Code Online (Sandbox Code Playgroud)