提问人:Nick 提问时间:12/3/2019 更新时间:12/3/2019 访问量:409
C# 命名空间通信
C# Namespace communication
问:
请问(作为新手)如何从另一个命名空间调用方法?如果可能的话,感谢您设置一个示例。.
例如:(1) 如何设置 MY_PRIMARY 类的属性以使用它们,以及 (2) 如何在 MY_SECONDARY 命名空间中调用 AddNumbers 方法?谢谢。。
using.. etc
namespace MY_PRIMARY
{
public partial class SomethingHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
class Program
{
private static void Main()
{
// some code here.. and..
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
}
};
namespace MY_SECONDARY
{
public partial class SomethingElseHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
class Program
{
static void Main()
{
// some code here..
}
// and..
Program outer = new Program();
outer.AddNumbers(3, 18); // <--- this is failing..
}
}
;
答:
1赞
Glenn van Acker
12/3/2019
#1
命名空间旨在按语义对对象进行分组。我有点困惑为什么你有 2 个程序类。拥有一个类库和一个程序会更有意义。无论如何。。。 假设您在命名空间 Program.First 中有一个 Object1, 和 Program.Second 中的 object2 Object2 有一个名为 someMethod 的方法。 调用此方法的方法是 a) 要么在你的头等舱上添加“使用 Program.Second”。 b) 创建一个 Program.Second.Object2 的实例,并调用该方法。
https://www.programiz.com/csharp-programming/namespaces
因此,假设您想让 Program() 的对象执行以下操作:
using System;
namespace MY_PRIMARY
{
public partial class SomethingHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
public class Program
{
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
}
}
namespace MY_SECONDARY
{
public partial class SomethingElseHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
class Program
{
static void Main()
{
MY_PRIMARY.Program outer = new MY_PRIMARY.Program();
outer.AddNumbers(3, 18);
}
}
}
(编辑)更新了我的答案,我复制了您的代码,看到您的命名空间没有关闭,因此,您在那里嵌套了命名空间和类。另外,有些代码直接在你的类中,而不是在函数中。
另外,不要定义 2 个 Main() 方法,这是应用程序的入口点。
评论
0赞
Nick
12/3/2019
非常感谢。事实上,老实说,我已经尝试过了,但我按照您的建议再次尝试。我一定做错了什么(两个命名空间在同一个文件中,以回答评论)。我收到的错误:“名称'外部。AddNumbers'在当前上下文中不存在“,我不明白为什么......
0赞
Glenn van Acker
12/3/2019
公开程序类
0赞
Luaan
12/3/2019
然后,@Nick发布实际的最小代码来重现您的问题。Glenn 所做的更改应该足以修复您到目前为止发布的示例代码。
0赞
Nick
12/3/2019
这就是我所拥有的: namespace MY_PRIMARY { public class Program { private static void Main() { } public int AddNumbers(int number1, int number2) { int result = number1 + number2; 返回结果;namespace MY_SECONDARY { public class Program { static void Main() { } MY_PRIMARY.程序外部 = 新MY_PRIMARY。程序();外。添加数字(3, 18);} };
0赞
Glenn van Acker
12/3/2019
这到底是什么错误?您的代码是在单独的文件中还是全部在一个文件中?您还应该为不同的类使用不同的名称。
1赞
FabioIn
12/3/2019
#2
...对函数和类的 POSITIONS 进行了一些修改......请看:
using Alias = MY_PRIMARY.Program;
namespace MY_PRIMARY
{
public partial class SomethingHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
public class Program
{
private static void Main()
{
// some code here.. and..
}
public int AddNumbers(int number1, int number2)
{
int result = number1 + number2;
return result;
}
};
namespace MY_SECONDARY
{
public partial class SomethingElseHere
{
public Boolean holiday { get; set; } = false;
public int age { get; set; } = 18;
//etc...
}
class Program
{
static void Main()
{
// some code here..
// and..
Alias outer = new Alias();
outer.AddNumbers(3, 18); // <--- OKAY...
}
}
}
}
查看更多:使用命名空间(C# 编程指南)
评论
0赞
Nick
12/3/2019
@Fabioln : 谢谢先生,它奏效了!现在,我确实理解这里的语法,但是,不应该允许使用MY_PRIMARY。程序不使用 Alias ?
0赞
FabioIn
12/3/2019
@Nick,我认为只有将“别名”更改为“MY_PRIMARY”。程序“......或者将名称“别名”更改为其他名称...示例:“My_Program”......
评论
Program outer = new Program();
莫。MY_SECONDARY.Program
MY_PRIMARY.Program
Program
AddNumbers
var outer = new MY_PRIMARY.Program();
MY_SECONDARY.Program