1

我是 C# 新手,我正在尝试编写一个轮盘模拟器。我试图模拟现实世界,你有一个轮子和一个荷官,荷官旋转轮子。在面向对象编程中,这意味着从不同的对象调用另一个对象的方法。下面的代码是我在 C# 中以正确的方式传递轮子对象来执行此操作吗?

提前致谢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Test
{
    class Program
        {
        static void Main(string[] args)
        {
            Wheel luckyWheel = new Wheel();
            Croupier niceLady = new Croupier();
            niceLady.SpinWheel(luckyWheel);
        }
    }

    class Wheel
    {

        public void Spin()
        {
            Console.WriteLine("Wheel Spun");
        }
    }

    class Croupier
    {
        public void SpinWheel(Wheel spinMe)
        {
            spinMe.Spin();
        }

    }
}
4

5 回答 5

2

是的,这是正确的,也是做这些事情的好方法,因为您的代码变得可测试。由于您在一个类中具有功能,因此该功能的执行者在其他类中:,...WheelCroupier

于 2013-04-12T09:04:40.520 回答
1

是的,一开始是正确的。我建议您将这些类分成不同的 .cs 文件。

于 2013-04-12T09:01:48.277 回答
0

是的,这是正确的方法,因为您的两个类都在同一个程序集中,您可以在Spin()内部声明方法。

于 2013-04-12T09:02:21.033 回答
0

更好的方法是在创建该类时将轮子传递给信使。然后,构造函数会将轮盘引用存储在一个字段中,然后当您旋转轮盘时,荷官可以通过本地字段访问轮盘。

像这样:

class Program
{
    static void Main(string[] args)
    {
        Wheel wheel = new Wheel();
        Croupier croupier = new Croupier(wheel);
        croupier.SpinWheel();
    }
}

class Wheel
{
    public void Spin()
    {
        Console.WriteLine("Wheel Spun");
    }
}

class Croupier
{
    private Wheel wheel;

    public Croupier(Wheel wheel)
    {
        this.wheel = wheel;
    }

    public void SpinWheel()
    {
        wheel.Spin();
    }
}
于 2013-04-12T09:04:50.807 回答
-1

您可以像 Adam K Dean 所说的那样改进它,这会导致您使用 dotFactory here所解释的策略模式。

于 2013-04-12T09:29:25.137 回答