猿问

如何从方法返回对对象的 const 引用?

public Item getItem(ulong itemId)

{

    Item item = items[itemId]

    return item;

}

现在的问题是:被调用者getItem必须能够检索item持有的信息;但不修改它。


对不起,但我比 C# 更了解 C++……恐怕我必须回到 C++ 一小段时间,只是为了让自己清楚我想要实现的目标……所以这就是我要做的在这种情况下,在 C++ 中:


const Item& getItem(unsigned long itemId)

{

    const Item& item = items[itemId];

    return item;

}

很好 - 现在无论谁打电话都getItem可以调用 getter on item,但不能调用setter。


我需要在 C# 中实现类似的结果......这可能吗?


慕标5832272
浏览 151回答 1
1回答

哈士奇WWW

您可以使用接口仅显示 getter,同时仍然支持实现该接口的类中的 setter。只要您返回interface,任何使用者都将被限制为只能使用 interface 定义的 getter。public interface IItem {    string SomeProperty { get; }}public class Item : IItem {    public string SomeProperty { get; set; }}public class ItemHandler {    private Item _item = new Item();    public IItem getItem() {        _item.SomeProperty = "A Value";        return _item;    }}class Program {    static void Main(string[] args) {        var itemHandler = new ItemHandler();        var item = itemHandler.getItem();        // You can read the property        Console.WriteLine(item.SomeProperty);        // You can't write to the property        //item.SomeProperty = "A New Value";    }}
随时随地看视频慕课网APP
我要回答