为什么什么都没有传递给我的重载函数?

问题描述 投票:0回答:1

这里的第一张海报。首先,我使用.NET 4.8和C#。我在使用重载函数时遇到一些问题,该重载函数似乎未获得任何参数输入。本质上,我的函数要执行的操作是获取单个对象或对象列表(所有自定义类'Card'),然后确定其中一个对象与调用该函数的对象是否具有相同的派系。但是,当我调试程序时,第一个函数可以正常工作并按预期工作,但是第二个函数似乎根本没有任何输入。它得到一个长度为0的对象。'Factions'是整个命名空间范围内的公共枚举;我认为那里没有任何问题。

类和函数定义:

public class Card
{
    /* Constructors, variables, and other functions left out for simplicity */

    public bool SameFaction(Card card)
    {
        if (card.Faction.Equals(this.Faction))
            return true;
        return false;
    }

    public bool SameFaction(List<Card> hand)
    {
        foreach (Card card in hand)
        {
            if (card.Faction.Equals(this.Faction))
            {
                return true;
            }
        }
        return false;
    }
}

实施:

Card card1 = new Card(Factions.faction1);
List<Card> listOfCards = new List<Card>();
{
    new Card(Factions.faction1);
    new Card(Factions.faction2);
    new Card(Factions.faction3);
    new Card(Factions.faction4);
};

card1.SameFaction(new Card(Factions.faction1)); // Returns true
card1.SameFaction(listOfCards); // Returns false, and when debugging, shows input as being an object of length 0

基本上,我想知道自己在做错什么,还有是否有更好的方法可以做到这一点。我是自学成才的,因此所有建议都对您有所帮助。谢谢!

c# .net function overloading
1个回答
3
投票

问题是单个;太多

List<Card> listOfCards = new List<Card>();
{
    new Card(Factions.faction1);
    new Card(Factions.faction2);
    new Card(Factions.faction3);
    new Card(Factions.faction4);
};

这是两件事,而不是一件事,因为第一行以;结尾。它创建一个空列表,然后有一段代码创建对象,而不将它们放在任何地方。

这可能是您的意思:

List<Card> listOfCards = new List<Card>
{
    new Card(Factions.faction1),
    new Card(Factions.faction2),
    new Card(Factions.faction3),
    new Card(Factions.faction4)
};
© www.soinside.com 2019 - 2024. All rights reserved.