簡體   English   中英

在抽象類中使用構造函數

[英]using constructor in abstract class

我的課如下:

public abstract class cDBBase
{
     public cDBBase()
     {
         some codes
      }
      Some codes;
 }

我有另一堂課

public class cSQL : cDBBase
{
     public void cSQL()
     {
         Some codes;
     }
}

為什么在子類構造函數上出現錯誤“成員名稱不能與其所在的類型相同的名稱”?

這是完整的代碼:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Uploader
{
    public abstract class cDBBaseClass
    {
        public string ServerName { get; set; }
        public string DBName { get; set; }
        public string UserName { get; set; }
        public string Password { get; set; }
        public string ConnString;

        public cDBBaseClass(string serverName, string dBName, string userName, string password)
        {
            ServerName = serverName;
            DBName = dBName;
            UserName = userName;
            Password = password;
        }

        public abstract string SetConnString();

        public abstract void SetConn();
    }
}

和孩子班

    using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Data;


namespace Uploader.Classes
{
    public class cSQL:cDBBaseClass
    {
        private SqlConnection Conn = new SqlConnection();

        public cSQL()
        {
            SetConnString();
            SetConn();
        }


        public override string SetConnString()
        {
            return "data source = " + this.ServerName +
                   "; database = " + this.DBName +
                   "; User ID = " + this.UserName +
                   "; Password = " + this.Password;
        }

        public override void SetConn()
        {
            Conn.ConnectionString = this.ConnString;
        }

        public SqlDataReader ExecSQL(string Query)
        {
            using (SqlConnection Conn = new SqlConnection(SetConnString()))
            {
                Conn.Open();   
                SqlCommand cmd = new SqlCommand(Query , Conn);
                return cmd.ExecuteReader();
            }
        }


        public SqlDataReader ExecStoredProcedure(string SPName)
        {
            using (SqlConnection Conn = new SqlConnection(SetConnString()))
            {
                Conn.Open();
                SqlCommand cmd = new SqlCommand(SPName, Conn);
                cmd.CommandType = CommandType.StoredProcedure;
                return cmd.ExecuteReader();
            }
        }


    }
}

您正在定義一個方法cSQL ,它的名稱與其所包含的類的名稱完全相同。您不能這樣做。 您是不是要構造一個構造函數? 只需刪除void

tnw確實確實解決了您的原始問題,但是要解決您的其他問題,您的類必須接受與基類相同的參數,並將其傳遞給它:

public class cSQL : cDBBaseClass
{
    private SqlConnection Conn = new SqlConnection();

    public cSQL(string serverName, string dBName, string userName, string password)
        : base(serverName, dBName, userName, password)
    {
        SetConnString();
        SetConn();
    }

    ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM