我们可以声明另一个类的对象作为数据成员

时间:2014-09-15 17:00:54

标签: c#

我的代码是这样的......

class Transaction
{
    public class Date
    {
        public int day, month, year;
    }
    Date d;
    double amount;
    long acc_no;
    string action;
}

我们如何访问日期d。

3 个答案:

答案 0 :(得分:1)

  

我们如何访问日期d

访问任何对象的任何类级别成员的方式相同。

在类Transaction的任何实例中,您可以将其作为类级别成员访问:

this.d

Transaction的实例外部,您无法访问d(也不应该),因为它是私人成员。 (默认情况下,C#成员是私有的,除非另有声明。)

Date的实例中,无法保证您处于Transaction实例的上下文中,因此无法直接访问该成员。 (只是因为它是一个嵌套类并不能保证它总是在那个结构中使用。)并不是因为dDate的实例所以它真的很重要所以如果你在Date然后它只需要访问自己。

答案 1 :(得分:1)

如评论中提到的,这通常不是一个好主意,但您可以访问它。您可以从类Transaction中的任何位置访问它,但不能在它之外访问它,除非您使用方法或属性。

class Transaction
{
    public class Date
    {
        public int day, month, year;
    }
    Date d;
    double amount;
    long acc_no;
    string action;


    public Date GetDate()
    {
        return d; // Access Date d by using a method
    }
}

答案 2 :(得分:0)

命名空间银行业务 {

公共类交易     {         公共课日期         {             public int day,month,year;         }         public Date date = new Date();         公开双倍金额;         public long acc_no;         公共字符串动作;     }

class Program
{
    static void Main(string[] args)
    {
        List<Transaction> transaction = new List<Transaction>();
        StreamReader sr = new StreamReader("transaction.csv");
        string data = sr.ReadLine();
        while (data != null)
        {
            string[] dataarray = data.Split(',');
            string[] date_split = dataarray[0].Split('-');

            Transaction tran_obj = new Transaction();

            tran_obj.date.day = int.Parse(date_split[0]);
            tran_obj.date.month = int.Parse(date_split[1]);
            tran_obj.date.year = int.Parse(date_split[2]);

            tran_obj.acc_no = long.Parse(dataarray[1]);
            tran_obj.amount = double.Parse(dataarray[2]);
            tran_obj.action = dataarray[3];

            transaction.Add(tran_obj);
            data = sr.ReadLine();

        }
        Console.WriteLine("Please enter the account number for which you are looking for");
        long new_acc_no = long.Parse(Console.ReadLine());
        foreach (Transaction t in transaction)
        {
            if (t.acc_no == new_acc_no)
            {
                Console.WriteLine(t.amount);
                Console.WriteLine(t.date);
                Console.WriteLine(t.action);

            }
        }

        string s = Console.ReadLine();
    }
    string s = Console.ReadLine();
}

}

此代码的问题在于输出控制台中没有显示日期 我已经存储了这个12-02-1994的日期