我觉得这是一个愚蠢的问题,但我似乎无法弄清楚为什么会这样。请考虑以下事项:
JButton btnNewButton_1 = new JButton("Log In");
btnNewButton_1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
if(Username.equals(textField1.getText())){
if(Password.equals(textField2.getText())){
// close(LoginGUI);
// run(StudentGUI);
**Missing function**
msg = "Loged in!";
}else{
msg = "Login Denied";
}
}else{
msg = "Login Denied";
}
JOptionPane.showMessageDialog(null,msg);
}
});
btnNewButton_1.setBounds(157, 230, 89, 23);
frame.getContentPane().add(btnNewButton_1);
}
现在,因为我已声明我想使用myNamespace;为什么编译器顽固地试图使用全局版本而不是命名空间版本?如果要这样做,使用的重点是什么?
我的真实代码当然比这更复杂。在实际代码中,我遇到了(Unity API)中的问题,我在更多这样的情况下遇到编译错误:
// file: A.cs
class A {
public static string ns = "global";
}
// file: myNamespace\A.cs
namespace myNamespace {
class A {
public static string ns = "myNamespace";
}
}
// in some other file...
using myNamespace;
class myClass {
public void myMethod() {
Console.WriteLine(A.ns);
}
}
// OUTPUT: global
这给了我一个参数例外。不确定这可能与泛型有关吗?我错过了一些非常愚蠢的东西吗?
答案 0 :(得分:1)
我现在无法测试或查找规范,但我相信解析规则会在名称空间中搜索调用代码。由于您的调用代码位于全局命名空间中,因此会搜索该命名空间。如果您将调用代码放在myNamespace
命名空间内,我怀疑您是否得到了您正在寻找的行为。
如果调用代码不在 命名空间中,那么你应该得到一个"模糊类型"编译错误。
另请注意,默认情况下,您的课程为internal
,但如果您的课程都在同一个程序集中,则应该是一个问题。