首页 > 解决方案 > C#中setter方法中的随机方法

问题描述

我是 C# 新手。我试图弄清楚如何在 setter 中使用 random 方法。这就是我的代码现在的样子:

public class star_wars_figures
{
    private string charactor;
    private int bounty;

    public star_wars_figures(string charactor)
    {
        Charactor = charactor;            }

    public string Charactor
    {
        get
        {
            return charactor.ToUpper();
        }
        set
        {
            if (value == "Han Solo" || value == "Leia")
            {
                charactor = value;
            }
            else charactor = "INCORRECT CHARACTOR!!!!";
        }
    }

    public int Bounty
    {
        get
        {
            return bounty;
        }
        set
        {
            Random rnd = new Random();
            bounty = rnd.Next(1, 10);
            bounty = value;
        }
    }
}

在我的主要实例中,我使用以下内容:

star_wars_figures sw1 = new star_wars_figures("Han Solo");
Console.WriteLine($"Character is: {sw1.Charactor}");
Console.WriteLine($"Money: {sw1.Bounty}"); 

我正在尝试在 bounty 属性的 setter 方法中生成一个随机 int 数。它只是返回 0。

我在这里错过了什么?

标签: c#random

解决方案


“值”(您的最后一个分配)是调用设置器时收到的值。

目前“赏金”设置了两次:首先是您的随机生成器结果,然后是“值”。因此,第一个值集丢失并且无法在任何地方使用。

您可以删除“赏金=价值;” 让它工作。尽管如此,属性设置器并不是做你想做的事的正确地方,我认为你对如何使用属性和支持字段有根本的误解。


推荐阅读