gpt4 book ai didi

C# "is inaccessible due to its protection level"构造函数错误

转载 作者:太空狗 更新时间:2023-10-29 20:50:46 24 4
gpt4 key购买 nike

子类“caesar”的构造函数出错。它说名称,类型由于其保护级别而无法访问。怎么来的?因为这是从“Cipher”类派生的子类,所以它不应该给出这样的错误。我怎样才能克服这种情况。但我希望这些变量是私有(private)的。我不想将它们更改为公开。

***第二个代码示例有效。有人能看出区别吗?

namespace Encrypter
{
class Cipher
{
public Cipher(string name, string type)
{
setName(name);
setType(type);

}
private string name;
private string type;

public void setName(string newName)
{
name = newName;
}
public string getName()
{
return name;
}
public void setType(string newType)
{
type = newType;
}
public string getType()
{
return type;
}
public string encrypt(string text)
{
return text;
}
public string decrypt(string text)
{
return text;
}
}
}




namespace Encrypter
{
class Caesar : Cipher
{

private int shiftamount;
private string shiftdirection;
public Caesar(int shiftamount, string shiftdirection) : base(name, type)
{
setShiftamount(shiftamount);
setShiftdirection(shiftdirection);
}
public void setShiftamount(int newShiftamount)
{
shiftamount = newShiftamount;
}
public int getShiftamount()
{
return shiftamount;
}
public void setShiftdirection(string newShiftdirection)
{
shiftdirection = newShiftdirection;
}
public string getShiftdirection()
{
return shiftdirection;
}

}
}

---------------------------- 新编辑----------------

class MyFile
{
public MyFile(int id, string name, int size, string type)
{
setId(id);
setName(name);
setSize(size);
setType(type);

}
private int id;
private string name;
private string type;
private int size;




class Movie : MyFile
{
private string director;
private int release_year;
public Movie(string director, int release_year, int id, string name, int size) : base( id, name, size, "m")
{
setDirector(director);
setRelease_year(release_year);
}

最佳答案

看起来你在定义派生类构造函数时犯了一个错误。如果你想获取父类(super class)的 nametype 值,你必须将它们作为额外的构造函数参数传递(派生类中总共有 4 个参数构造函数。)例如,将其更改为此应该有效:

    public Caesar(int shiftamount, 
string shiftdirection,
string name,
string type)
: base(name, type)

您还可以采取许多其他策略。

关于C# "is inaccessible due to its protection level"构造函数错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5329665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com