c#中的“public void”函数

时间:2012-09-04 08:25:08

标签: c# function public void

任何人都可以告诉我为什么当我尝试声明并使用“public void”函数时它会给我错误:

 Expected class, delegate, enum, interface, or struct

我在开始时宣布它并且设置正确,它不会在我的主体中调用。我研究了它,这似乎是做它的。

编辑:

 public void receipt();

 namespace ConsoleApp
 {
      class Progam
      {
           static ... Main()
           {
                ...
           }
      }
 }

 public void receipt()
 {
      ...
 }

所以它需要在“课程计划”中吗?

5 个答案:

答案 0 :(得分:7)

您必须声明包含在类或结构中的方法,因为方法不是根成员。

答案 1 :(得分:1)

public void receipt()放入一个类(在Program或新类中)并删除public void receipt();

答案 2 :(得分:0)

我假设你试图声明一个没有类(或结构)体的函数。请注意,在C#中,每个方法都必须在类中声明。

请注意,如果您不想创建一个能够调用该方法的对象,您可以将其声明为“静态”'如下:


public class MyClass
{
public static void MyMethod()
{
    Console.WriteLine("Hello World from static method");
}
}

你可以轻松使用:

MyClass.MyMethod();

在你的情况下:

public void receipt(); // C#

中没有前向声明

命名空间ConsoleApp  {       课程Progam       {            静...主()            {                 ...            }       }  }

public void receipt()//这需要在类中声明  {       ...  }

使用C#代码是:


 namespace ConsoleApp
 {
      class Progam
      {
           static ... Main()
           {
                Program program = new Program();
                program.receipt();
                // or static method
                Program.receipt_static(); 

           }
           public static void receipt_static()
           {
            ...
           }
      }

   public void receipt()
  { ... }
 }
}

答案 3 :(得分:0)

从错误中看,您似乎缺少类声明。

你确定你有这样的东西:

public class Foo
{
     public void Bar()
     {
          ...
     }
}

答案 4 :(得分:0)

    private void btnBrowse_Click(object sender, EventArgs e)
    {
        try
        {
            // Create an instance of the open file dialog box.
            OpenFileDialog fld = new OpenFileDialog();

            // Set filter options and filter index.
            fld.Filter = "CSV Files (.CSV) |*.csv*";
            fld.FilterIndex = 1;

            fld.Multiselect = false;

            // Call the ShowDialog method to show the dialog box.
            if (fld.ShowDialog() == DialogResult.OK)
            {
                txtBrowse.Text = fld.FileName;
            }
            fld = null;
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message.ToString(), "CSV Browse", MessageBoxButtons.OK, MessageBoxIcon.Error); 
        }

    }

    private void btnReadCSV_Click(object sender, EventArgs e)
    {
        try
        {
            DataTable dt = GetDataTableFromCsv(txtBrowse.Text, chkHasHeader.Checked);
            grvData.DataSource = dt;
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.Message.ToString(), "CSV Read", MessageBoxButtons.OK, MessageBoxIcon.Error); 
        }

    }

    static DataTable GetDataTableFromCsv(string path, bool isFirstRowHeader)
    {
        string header = isFirstRowHeader ? "Yes" : "No";

        string pathOnly = Path.GetDirectoryName(path);
        string fileName = Path.GetFileName(path);

        string sql = @"SELECT * FROM [" + fileName + "]";

        using (OleDbConnection connection = new OleDbConnection(
                  @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathOnly +
                  ";Extended Properties=\"Text;HDR=" + header + "\""))
        using (OleDbCommand command = new OleDbCommand(sql, connection))
        using (OleDbDataAdapter adapter = new OleDbDataAdapter(command))
        {
            DataTable dataTable = new DataTable();
            dataTable.Locale = CultureInfo.CurrentCulture;
            adapter.Fill(dataTable);
            return dataTable;
        }
    }

    private void btnImport_Click(object sender, EventArgs e)
    {
        try
        {

        DataTable dt = grvData.DataSource as System.Data.DataTable; //Getting data from Datagrid

        string strSQL = "create Table " + txtTabelName.Text + " (";

        foreach (DataColumn dc in dt.Columns)
        {
            if (dc.DataType.ToString() == "System.String")
            {
                strSQL += dc.ColumnName + " varchar(255), ";
            }
            else if (dc.DataType.ToString() == "System.Double")
            {
                strSQL += dc.ColumnName + " Numeric(10,3), ";
            }
            else if (dc.DataType.ToString() == "System.Int32")
            {
                strSQL += dc.ColumnName + " int, ";
            }
        }
        strSQL += ")";

         string strStatus = Executesql(strSQL);
            if (strStatus == "Table Created")
            {
                int iCntRecords = 0;
                foreach (DataRow dr in dt.Rows)
                {
                    strSQL = "insert into " + txtTabelName.Text + " values ("; //Inserting value to Table
                    foreach (DataColumn dc2 in dt.Columns)
                    {
                        if (dc2.DataType.ToString() == "System.String")
                        {
                            strSQL += "'" + dr[dc2.Ordinal].ToString().Replace("'", "") + "',";
                        }
                        else
                        {
                            strSQL += dr[dc2.Ordinal] + ",";
                        }
                    }
                    strSQL = strSQL.Substring(0, strSQL.Length - 1) + ")";

                    Executesql(strSQL);
                    iCntRecords += 1; //add n counter on each successfull enter
                }
                MessageBox.Show("Completed! " + Environment.NewLine + Environment.NewLine + iCntRecords.ToString() + " records added!", "Done!");
            }
            else
            {
                MessageBox.Show(strStatus);
            }
        }
        catch (Exception ex)
        {

            MessageBox.Show(ex.ToString());

        }
    }
    private string Executesql(string strSQL)
    {
        try
        {
            SqlConnection con = new SqlConnection(Properties.Settings.Default.connectionstring); //Connection to SQL Database
            con.Open();
            SqlCommand cmd = new SqlCommand(strSQL, con);
            cmd.ExecuteNonQuery();
            con.Close();
        }
        catch (Exception ex)
        {
            return ex.Message.ToString();

        }
        return "Table Created";
    }
}