2014-09-15 3 views
-2

моего кода, как это ...мы можем объявить объект другого класса как элемент данных

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

как мы можем получить доступ к Date д.

+2

откуда? Да, ты можешь сделать это. Обратите внимание, что классы вложенности - это то, что вы должны делать, только если вы * знаете * его хорошую идею. Большую часть времени вы не хотите этого делать. – BradleyDotNET

ответ

1

, как мы можем получить доступ на дату D

таким же образом, вы получаете доступ любого члена класса уровня какого-либо объекта.

из любого экземпляра класса Transaction, вы сможете получить доступ его в качестве члена класса уровня:

this.d 

Снаружи экземпляра Transaction вы не можете получить доступ к d (Вы не должны), потому что это частный член. (Члены C# являются закрытыми по умолчанию, если не указано иное.)

От экземпляра Date нет гарантии, что вы находитесь в контексте экземпляра Transaction, поэтому нет прямого доступа к этому члену. (Просто потому, что это вложенный класс не гарантирует, что он всегда будет использоваться в этой структуре.) Не то, чтобы это имело бы какое-либо значение, поскольку d является экземпляром Date, поэтому, если вы находитесь в Date, тогда ему будет нужно только получить доступ сам в любом случае.

1

Как упоминается в комментарии, это, как правило, не очень хорошая идея, но вы можете получить к ней доступ. Вы можете получить доступ к нему из любого места в транзакции класса, но не за его пределами, если только вы не используете метод или свойство.

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 
    } 
} 
0

имен банковской {

общественного класса Transaction { Дата общественного класса { общественного ИНТ день, месяц, год; } дата Дата = новая дата(); общественное двойное количество; public long acc_no; public string action; }

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

Смежные вопросы