在当前环境中存在“

时间:2018-05-17 01:10:31

标签: c# asp.net

我的帐户控制器中存在C#问题。

   public class Authenticateuser
{
    int Userid = 0;
    static string connstring = ConfigurationManager.ConnectionStrings["dbPCTECH"].ConnectionString;
    public MySqlConnection connection = new MySqlConnection(connstring);
    Connection.open;

connection.open正在引发异常,它不在当前上下文中。是什么引起了这个?我尝试过改名等等。我从未遇到过这个问题。

1 个答案:

答案 0 :(得分:2)

三个主要问题:

  1. C#区分大小写
  2. 您必须添加()添加功能名称的末尾才能调用
  3. 函数调用必须在另一个函数内,而不是在类声明中
  4. 在C#中,Connectionconnection不同。有时您会想要使用不同的大小来区分两个成员,例如完整的属性,但除此之外,拥有connectionconNectIOn是不好的,即使它会起作用。

    此外,要调用函数或方法,您需要使用名称末尾的(),这样您就可以connection.Open();

    修改: 问题3有点复杂。这是你的班级:

    public class Authenticateuser
    {
        public MySqlConnection connection = new MySqlConnection(connstring);
    
        private static string connstring = ConfigurationManager
            .ConnectionStrings["dbPCTECH"].ConnectionString;
        private int Userid = 0;
    
        connection.Open;
    }
    

    我将代码重构为更传统的顺序,public成员位于顶层,private成员位于底层,static成员位于非静态位置之上。如果您不使用private,则默认为private,但我更喜欢在输入时明确表示。

    无论如何,这个问题与函数无法在类体中直接调用这一事实有关。只能在那里写入字段,属性和方法。你需要做的是将它包装在另一个函数中,如下所示:

    public class Authenticateuser
    {
        public MySqlConnection connection = new MySqlConnection(connstring);
    
        private static string connstring = ConfigurationManager
            .ConnectionStrings["dbPCTECH"].ConnectionString;
        private int Userid = 0;
    
        public Open() => connection.Open();
    }
    

    另外,

    public Open() => connection.Open();
    

    完全相同:

    public Open() 
    {
        connection.Open();
    }
    

    干净利落。这应该工作。然后你这样称呼它:

    var auth = new Authenticatuser();
    auth.Open();
    

    通常认为auth.Open();auth.connection.Open();更好。这是因为,在现实生活中,你不会告诉狗腿移动,你告诉狗移动,狗告诉它自己的腿移动。