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
は、電話をかけた人は誰でもゲッターを呼び出すことができますitem
が、セッターは呼び出すことができません。
C#で同様の結果を達成する必要があります...それは可能ですか?
インターフェイスを使用して、インターフェイスを実装するクラスのセッターをサポートしながら、ゲッターのみを表示できます。インターフェイスを返す限り、すべてのコンシューマーは、インターフェイスが定義するゲッターのみに制限されます。
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";
}
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加