| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1207 人关注过本帖, 1 人收藏
标题:C#入门精典中的一个例子看不懂请帮助小弟!!
只看楼主 加入收藏
陈新建
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2008-10-17
收藏(1)
 问题点数:0 回复次数:4 
C#入门精典中的一个例子看不懂请帮助小弟!!
Card类:
程序代码:
public class Card
{
      public readonly Suit suit;
      public readonly Rank rank;
      public override string ToString()
      {
         return "The " + rank + " of " + suit + "s";
      }
      private Card()
      {
      }
      public Card(Suit newSuit, Rank newRank)
      {
         suit = newSuit;
         rank = newRank;
      }
}


Deck类:
程序代码:
public class Deck
{           
    public Deck()
    {
        cards = new Card[52];
        for (int suitVal = 0; suitVal < 4; suitVal++)
        {
            for (int rankVal = 1; rankVal < 14; rankVal++)
            {
                cards[suitVal * 13 + rankVal -1] = new Card((Suit)suitVal,(Rank)rankVal);
            }
        }
    }

    private Card[] cards;

    public Card GetCard(int cardNum)
    {
        if (cardNum >= 0 && cardNum <= 51)
        return cards[cardNum];
    }
}


控制台程序入口:
程序代码:
static void Main(string[] args)
{
    Deck myDeck = new Deck();
    myDeck.Shuffle();
    for (int i = 0; i < 52; i++)
    {
        Card tempCard = myDeck.GetCard(i);
        Console.Write(tempCard.ToString());
        if (i != 51)
        Console.Write(", ");
        else
        Console.WriteLine();
    }
}


我有两个问题:
一,我不明白其中Deck类的字段为什么可以这样定义private card[] cards?
二,为什么可以直接调用Card类中的重写的ToString方法?
搜索更多相关主题的帖子: 例子 入门 精典 
2008-10-17 11:28
lubi
Rank: 1
等 级:禁止访问
帖 子:43
专家分:0
注 册:2008-10-14
收藏
得分:0 
1、是定义一个数组。
2、是方法的重载,因为当前tempCard 是Card类,调用Card类的方法当然就Card类重写的方法了。
2008-10-17 12:07
seiya027848
Rank: 1
等 级:新手上路
帖 子:60
专家分:0
注 册:2008-6-27
收藏
得分:0 
同意楼上的
2008-10-17 13:44
yanghe1117
Rank: 1
等 级:新手上路
帖 子:33
专家分:0
注 册:2008-10-10
收藏
得分:0 
1 字段写成private的,然后在成员函数里调用,据说是封装用,不知道对不对,我也是才学
2 同上
2008-10-17 21:14
zhao601
Rank: 1
等 级:新手上路
帖 子:111
专家分:0
注 册:2005-8-26
收藏
得分:0 
private card[] cards 是将card类生成私有card对象数组,private 定义的私有变量只能在Deck类生成的对象中使用,防止被其他访问修改
为什么可以直接调用Card类中的重写的ToString方法?
public override string ToString()

public 定义的公共方法,所以在该任何地方都可以调用
2008-10-17 21:54
快速回复:C#入门精典中的一个例子看不懂请帮助小弟!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011373 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved