非常感谢,非常感谢您的帮助。它意识到我需要学习多少。它是我想要设置的方向,并且已经调整了您的示例以反映这一点。但是,它现在要求;在我的静态虚空主的尽头....即使我以前从未添加过这个,它要求声明身体外部,抽象。它也没有让我在Main中设置链接,我使用以下语法gh.setName(" Great Hall"); gh.setN(DR);为了设置大厅和客厅之间的北方联系。任何的想法?
private string RoomName;
private Room N = null;
private Room E = null;
private Room S = null;
private Room W = null;
public Room X { get; private set; }
public void setName(string N)
{
RoomName = N;
}
public void setN(Room X)
{
N = X;
}
public void setE(Room X)
{
E = X;
}
public void setW(Room X)
{
W = X;
}
public void setS(Room x)
{
S = X;
}
public Room getN()
{
return N;
}
public Room getE()
{
return E;
}
public Room getS()
{
return S;
}
public Room getW()
{
return W;
}
static void Main(string[] args)
Room gh = new Room();
Room kit = new Room();
Room Pan = new Room();
Room Dun = new Room();
Room dr = new Room();
Room lib = new Room();
Room din = new Room();
Room sr = new Room();
Room weap = new Room();
Room tow = new Room();
Room gal = new Room();
Room tr = new Room();
gh.setName("Great Hall");
gh.setN(dr);
答案 0 :(得分:2)
在C#
中,您可以使用简单的方式处理属性:
public string RoomName {get; set;}
将使用GET
和SET
创建默认属性。它还将为您创建一个领域,您不必为此烦恼。
如果您需要做更多其他事情,可以使用字段:
private string _roomName;
public string RoomName {
get {
//do something before returning
return _roomName;
}
set {
//do something while value is being set
_roomName = value;
}
}
如果您使用的是新的C#(6.0),您也可以使用该语法:
private string _roomName;
public string RoomName => _roomName;
当您在代码中构建属性时,可能会发生在下面的内容: 编译器将属性转换为两种方法的集合:
public string Get_RoomName() {
return _roomName;
}
public void Set_RoomName(string value) {
_roomName = value;
}
答案 1 :(得分:2)
您可以像这样明确处理属性:
private string _roomName;
public string roomName {
get {
return _roomName;
}
set {
_roomName = value;
}
}
答案 2 :(得分:1)
首先,根据您的错误:
SetN必须将一个主体声明为extern,abstract或partial,这样我的get和set方法都会出现。
请关闭}
!
class Room
并删除;
之后的public void setN(Room X);
!
在C#中,您可以使用properties来获取get和set方法的功能:
这是一个简短的变体:
public string Name{ get; set; }
这是显式版本:
private Room myN;
public Room N
{
get { return myN; }
set { myN = value; }
}
在扩展版本中,您有一个私人字段,从外部无法访问,并且您拥有公共属性。它有一个set { myVar = value; }
部分,它等同于你的set-method。
编辑:正如@Jens所建议的那样:value
是一个默认参数,它包含从外部传递给set方法的值。它总是被称为value
,而不是在C#
设置时调用约定将像类变量一样使用它:
Room AnyRoom = new Room();
Room X = new Room();
AnyRoom.N = X;