emb*_*ure -1 c# unity-game-engine
我很擅长C#和Unity中的脚本.到目前为止,在制作C#(非MB)类时,我会使用以下模式.
public class Item
{
public string itemName;
public Item(string newItemName)
{
itemName = newItemName;
}
}
Run Code Online (Sandbox Code Playgroud)
在其他一些脚本中我可以使用Item rock = new Item("Rock");或其他什么.
现在,我正在使用以下属性.
public class Item
{
string itemName;
public string ItemName
{
get { return itemName; }
set { itemName = value; }
}
}
Run Code Online (Sandbox Code Playgroud)
在我使用的其他一些脚本中 Item rock = new Item(); rock.ItemName = "Rock";
实际上,我经常使用自动实现的属性,并且除了项目的名称之外还有更多的字段.当我使用公共字段时,很容易在构造函数中设置所有这些字段.现在,我不确定如何,或者是否可能(如果我想让它们保密).因此,我发现自己必须使用默认构造函数,然后使用诸如rock.ItemWeight = "1 lb" rock.ItemColor = "gray" rock.ItemType = "blunt instrument"...etc. for every item and field each time a new item is created.更好的方法之类的属性设置所有字段?
切勿使用公共领域!
设置你的大脑默认使用这样的自动属性:
public string ItemName { get; } // without even the setter!
Run Code Online (Sandbox Code Playgroud)
只有在类必须可变时才添加setter.
谁说你不能在构造函数中设置它?看:
public class Item
{
public string ItemName { get; }
public Item(string newItemName)
{
ItemName = newItemName;
}
}
Run Code Online (Sandbox Code Playgroud)
您还可以在最后使用对象初始化块:
public class Item
{
// setter is needed for this to work.
public string ItemName { get; set; }
}
var item = new Item() { ItemName = "" };
Run Code Online (Sandbox Code Playgroud)
我只是想知道当这些成员是私有的时,如何在构造函数中设置成员.
构造函数是类的一部分,因此如果它们有一个setter,它们可以设置私有属性.这只是在课外,属性是看不见的.
| 归档时间: |
|
| 查看次数: |
69 次 |
| 最近记录: |