为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕标5832272 2021-07-01 14:19:29
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# 中实现类似的结果......这可能吗?
查看完整描述

1 回答

?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

您可以使用接口仅显示 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";

    }

}


查看完整回答
反对 回复 2021-07-03
  • 1 回答
  • 0 关注
  • 150 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信