2014-01-03 4 views
0

Привет В настоящее время я делаю программу, и один ее аспект заключается в том, чтобы открывать другие программы в определенное время и дату.Динамические 3D-массивы C#

Я хотел добавить детали в динамический массив 3D, как там может быть много программ, как пользователь хочет добавить в.

public static string[,,] programData = new string[,,] 
    { 
     //Program     Monday   Tuesday  Wednesday  Thursday  Friday  Saturday  Sunday   Once 
    {{"File Path","File Name"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"}}, 
    {{"File Path","File Name"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"}}, 
    {{"File Path","File Name"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"},{"Day","Time"}}, 

    }; 

Массив должен иметь фиксированное значение 9 строк и 2 но может быть много программ [x, 9,2].

Пожалуйста, сообщите, что информации недостаточно, чтобы уйти.

+0

Вы имеете в виду массивы с зубчатыми колесами –

+0

Вы вынуждены использовать структуру массива, как вы описали? Кроме того, вы можете рассмотреть более подходящую структуру, такую ​​как список объектов для каждой программы, содержащий список времени доступа. – okrumnow

+0

Нет, я мог бы использовать любую переменную, которую я хочу, однако мне нужно идти и хранить эти данные в текстовом документе, который затем может быть прочитан при следующем открытии приложения. @okrumnow – Jason

ответ

0

Я не знаю, проблемы с производительностью неровными массивов, но ваш случай я думаю, вам нужно хранить

информацию о программах и связанное с ним свободное время в вашей программе. сначала создать модель объект данных некоторых вещей, как

public enum Days 
    { 
     Sunday = 0, 
     Monday, 
     Tuesday, 
     WednessDay, 
     Thursday, 
     Friday, 
     Saturday, 
     Once 
    } 
    public class Day 
    { 

     public Days AssociateDay { get; set; } // used enum for better coding 
     public DateTime Time { get; set; } 
    } 
public class Program 
{ 
    public Program() 
    { 
     Days=new List<Day>(); 
    } 
    public int Id { get; set; } 
    public string FilePath { get; set; } 
    public string FileName { get; set; } 
    public List<Day> Days { get; private set; } 

    public void AddDay(Day day) 
    { 
     if(Days.Any(x=>x.AssociateDay==day.AssociateDay)) 
     { // i dont know whats ur logic here i am returning without doing anything 

      return; 

     } 

     Days.Add(day); 

    } 

} 

public class MyProgram 
{ 
    private static void Main(string[] args) 
    { 

     List<Program> Programs = new List<Program>(); 

     // Code to add new Program 

     Program urProgram = new Program {FileName = "UrFile.aspx", FilePath = "Ur System Drive",Id = 1}; 
     urProgram.AddDay(new Day{AssociateDay = Days.Sunday,Time = DateTime.Now}); 

     Program myprogram = new Program { FileName = "MyFile.aspx", FilePath = "My System Drive" ,Id = 2}; 
     urProgram.AddDay(new Day { AssociateDay = Days.Monday, Time = DateTime.Now }); 



     Program theireePrgram = new Program { FileName = "theireeFile.aspx", FilePath = "their System Drive", Id = 3 }; 
     theireePrgram.AddDay(new Day { AssociateDay = Days.Monday, Time = DateTime.Now }); 

     // Your program object created now you can add to list collection 

     Programs.Add(urProgram); 
     Programs.Add(myprogram); 
     Programs.Add(theireePrgram); 

     // Update a program 

     int id = 1; 

     var pgmUpdate = Programs.First(x => x.Id == 1); 

     pgmUpdate.AddDay(new Day{AssociateDay = Days.Monday,Time = DateTime.Now}); 


     // Delete a program 

     id = 3; 
     Programs.Remove(Programs.First(x => x.Id == id)); 


     // List all programs 


     foreach (var program in Programs) 
     { 
      Console.WriteLine(program.Id); 
      Console.WriteLine(program.FileName); 
      Console.WriteLine(program.FilePath); 

      foreach (var day in program.Days) 
      { 
       Console.WriteLine(day.AssociateDay); 
       Console.WriteLine(day.Time); 
       Console.WriteLine("............................"); 
      } 

      Console.WriteLine("*************************"); 
     } 

     Console.ReadLine(); 



    } 


} 

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

+0

Будет ли это иметь смысл ??? .. –

+0

Привет спасибо за ответы! Я закончил сериализацию в XML-документе так же, как у binson выше. Спасибо за ваше время, чтобы ответить мне. – Jason

0

Вы можете использовать вложенный словарь.

Пример существо:

Dictionary<string, Dictionary<string, DateTime>> fileLaunchTimes = new Dictionary<string,  Dictionary<string, DateTime>>(); 
Dictionary<string, DateTime> dict = new Dictionary<string, DateTime>(); 
dict.Add("Monday", DateTime.Now); //etc (replace datetime.now with whatever time you want 
dict.Add("Tuesday", DateTime.Now); 
fileLaunchTimes.Add("filename", dict); 
Смежные вопросы