C# 父类的受保护属性
我正在使用一个名为“contributable”的父类属性,然后在执行期间调用了一个名为“contributablemoral”的派生类,但在我看来它出现在null派生类方法中C# 父类的受保护属性,c#,C#,我正在使用一个名为“contributable”的父类属性,然后在执行期间调用了一个名为“contributablemoral”的派生类,但在我看来它出现在null派生类方法中 public class contribuable { protected string MATRICULE_FISCALE; public contribuable(string _matricule_fiscale) { this.MATRICULE_FISCALE = _m
public class contribuable
{
protected string MATRICULE_FISCALE;
public contribuable(string _matricule_fiscale)
{
this.MATRICULE_FISCALE = _matricule_fiscale; //example MATRICULE_FISCALE=123456789
}
public void insertContribuable()
{
string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" +this.MATRICULE_FISCALE +"')"; //MATRICULE_FISCALE=123456789
}
}
}
class ContribuableMoral : contribuable
{
public ContribuableMoral()
{
}
public void InsertionMorale()
{
string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MATRICULE_FISCALE + "')"; //MATRICULE_FISCALE=null
}
}
通常情况下,类可以被调用到派生类?好吧,这样的代码一开始不会编译。。 但问题是派生类没有传递_matricule_fiscale的基类构造函数。 添加构造函数:
public ContribuableMoral(string _matricule_fiscale) : base (_matricule_fiscale) { }
您应该为在父类中传递的构造函数提供一个参数,例如:
public ContribuableMoral(string _matricule_fiscale) : base(_matricule_fiscale)
然后它会工作,还有一些其他错误
以下类别固定:
public class contribuable
{
protected string MATRICULE_FISCALE;
public contribuable(string _matricule_fiscale)
{
this.MATRICULE_FISCALE = _matricule_fiscale; //example MATRICULE_FISCALE=123456789}
}
public void insertContribuable()
{
string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" + this.MATRICULE_FISCALE + "')";
//MATRICULE_FISCALE=123456789
}
}
internal class ContribuableMoral : contribuable
{
public ContribuableMoral(string _matricule_fiscale) : base(_matricule_fiscale)
{
}
public void InsertionMorale()
{
string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MATRICULE_FISCALE + "')";
//MATRICULE_FISCALE=null
}
}
要称此为使用:
var c = new ContribuableMoral("123456789");
c.InsertionMorale();
之所以发生这种情况,是因为您的
Contribuable
参数化构造函数不是从Contribuable
调用的
它应该是:
class ContribuableMoral : Contribuable
{
public ContribuableMoral() : base("somestring")
{
}
或
注意1:请检查以下代码样式,并以类似的方式格式化代码,以便其他人理解您
public class Contribuable
{
protected string MatriculeFiscale { get; }
public Contribuable(string matriculeFiscale)
{
MatriculeFiscale = matriculeFiscale;
}
public void InsertContribuable()
{
string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" + MatriculeFiscale +"')";
}
}
class ContribuableMoral : Contribuable
{
public ContribuableMoral(string matriculeFiscale) : base(matriculeFiscale)
{
}
public void InsertionMorale()
{
string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MatriculeFiscale + "')";
}
}
注意2:您的代码现在容易受到SQL注入的攻击。不要使用字符串连接来生成SQL查询。调试器会怎么说?错误是什么?如此糟糕的代码装饰:小写的类名,没有水平缩进,没有垂直间距,随机放置的大括号。除了SQL注入之外,由于字符串串接,还有易受攻击的代码。@YeldarKurmangaliyev我怀疑这是错误的根源。.这些代码甚至无法编译。。缺少背景,括号在错误的地方,等等。你必须处理你的格式。现在,我已经为你做了,但这是一个无法理解的混乱。
public class Contribuable
{
protected string MatriculeFiscale { get; }
public Contribuable(string matriculeFiscale)
{
MatriculeFiscale = matriculeFiscale;
}
public void InsertContribuable()
{
string sql = "insert into CLIENT(MATRICULE_FISCALE)values('" + MatriculeFiscale +"')";
}
}
class ContribuableMoral : Contribuable
{
public ContribuableMoral(string matriculeFiscale) : base(matriculeFiscale)
{
}
public void InsertionMorale()
{
string sqlMorale = "insert into CLIENT_MORALE(MATRICULE_FISCALE) values('" + MatriculeFiscale + "')";
}
}