2015-10-17 83 views
-2

我创建了一个名为Card的类和一个名为CardDeck的类。 在类CardDeck中,我声明了一个名为deck(类型为Card)的数组,其元素是Card类的对象。 它的卡片对象有自己的编号和形状。C#如何比较作为数组元素的对象属性?

我如何才能比较甲板[0]与甲板[1],看看这些obects是否有相同数量或相同的形状?

类CardDeck

using System; 
public Class CardDeck 
{ 
    private int number_of_elements = 30; 
    public CardDeck()//constructor 
    { 
     int[] arrayNumber = {0,1,2,3,4,5,6,7,8,9}; 
     string[] arrayShape = { "oval" , "diamond", "square" }; 
     deck = new Card[number_of elements]; 
     InitialiseDeck(arrauNumber, arrayShape); 
    } 
    private void InitialiseDeck(int[] num, string[] sha) 
    { 
     int count = 0; 
     for(int i = 0; i < 10; i++) 
     { 
     for(int j = 0; j < 3; j++) 
     { 
      deck[count] = new Card(num[i],sha[j]); 
      count++; 
     } 
     } 
    } 
} 

类卡

using System; 
public class Card 
{ 
    private int number; 
    private string shape; 

    public Card(int cardNumber, string cardShape) 
    { 
     number = cardNumber; 
     shape = cardShape; 
    } 
} 

回答

1

你会希望在Card类暴露numbershape变量公共属性。然后在Card类之外的代码中引用这些属性。

例如:

public class Card 
{ 
    private int number; 
    private string shape; 

    public Card(int cardNumber, string cardShape) 
    { 
     number = cardNumber; 
     shape = cardShape; 
    } 
    public int Number { get { return this.number; } } 
    public string Shape { get { return this.shape; } } 
} 

用法:

var card1 = new Card(13, "diamond"); 
var card2 = new Card(13, "heart"); 
if (card1.Number == card2.Number && card2.Shape == card2.Shape) 
{ 
    // The cards are the same 
} 

如果你想要做的是检查是否有卡的平等,那么你可以声明一下==运营商将为Card做等级:https://msdn.microsoft.com/en-us/library/8edha89s.aspx

+0

谢谢!但之后,我将如何比较让我们说对象Deck [0]的属性号码与Deck [1]的属性号码,以查看它们是否具有相同的号码?@Matt Thomas – Peridis

+0

@Peridis您能够使用Deck [0] .Number == Deck [1] .Number? –

+0

我想这会做,谢谢! @Matt Thomas – Peridis