Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [C#] Delucidazione creazione classi
Forum - C# / VB.NET - [C#] Delucidazione creazione classi

Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 21:07
Giovedì, 19/07/2012
Ciao a tutti! Sto imparando a creare delle classi, e mi sono imbattuto in questo problema:

Ho un file .csv con questi dati:

Codice sorgente - presumibilmente Plain Text

  1. prova asdf;1;2;34,4
  2. prova wers;2;3;34,4
  3. prova erew;32;1;2,2
  4. prova q432;;;23,2



Ho un form con il seguente codice:

Codice sorgente - presumibilmente C++

  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Text;
  7. using System.Windows.Forms;
  8.  
  9. using System.Linq;
  10. using System.IO;
  11.  
  12. namespace LinqToCsv
  13. {
  14.     public partial class Form1 : Form
  15.     {
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.  
  21.         private void Form1_Load(object sender, EventArgs e)
  22.         {
  23.             string[] csvlines = System.IO.File.ReadAllLines("FileData.csv");
  24.  
  25.            
  26.  
  27.             var query = from art in csvlines
  28.                         let row = art.Split(';')
  29.                         select new Articolo
  30.                         {
  31.                             Descrizione = row[0].ToString(),
  32.                             Qta = StringToInt(row[1].ToString()),
  33.                             Numero = StringToInt(row[2].ToString()),
  34.                             Prezzo = StringToDecimal(row[3].ToString())
  35.                         };
  36.  
  37.             dataGridView1.DataSource = query.ToList();
  38.  
  39.         }
  40.  
  41.         private int StringToInt(string val)
  42.         {
  43.             int result;
  44.  
  45.             bool success;
  46.  
  47.             success = Int32.TryParse(val, out result);
  48.  
  49.             return result;
  50.         }
  51.  
  52.  
  53.         private decimal StringToDecimal(string val)
  54.         {
  55.             decimal result;
  56.  
  57.             bool succes;
  58.  
  59.             succes = decimal.TryParse(val, out result);
  60.  
  61.             return result;
  62.         }
  63.     }
  64.  
  65.     public class Articolo
  66.     {        
  67.         public string Descrizione { get; set; }
  68.  
  69.         private int _qta = 0;
  70.         public int Qta
  71.         {
  72.             get { return _qta; }
  73.             set
  74.             {
  75.                 _qta = value;
  76.             }
  77.         }
  78.  
  79.         private int _numero = 0;
  80.         public int Numero
  81.         {
  82.             get { return _numero; }
  83.             set
  84.             {
  85.                 _numero = value;
  86.             }
  87.         }
  88.  
  89.         private decimal _prezzo = 0.000m;
  90.         public decimal Prezzo
  91.         {
  92.             get { return _prezzo; }
  93.             set
  94.             {    
  95.                 _prezzo = value;
  96.             }
  97.         }
  98.     }
  99. }



Il tutto funzion senza problemi ma immagino che questa parte non sia molto carina:

Codice sorgente - presumibilmente C#

  1. private int StringToInt(string val)
  2.         {
  3.             int result;
  4.  
  5.             bool success;
  6.  
  7.             success = Int32.TryParse(val, out result);
  8.  
  9.             return result;
  10.         }
  11.  
  12.  
  13.         private decimal StringToDecimal(string val)
  14.         {
  15.             decimal result;
  16.  
  17.             bool succes;
  18.  
  19.             succes = decimal.TryParse(val, out result);
  20.  
  21.             return result;
  22.         }



Questa mi serve nel caso la stringa sia vuota, come posso integrarla nella classe?

Ultima modifica effettuata da sps84 il 19/07/2012 alle 21:08


L'apprendista di C#...
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5475
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 21:36
Giovedì, 19/07/2012
Non ho capito il tuo problema ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 23:15
Giovedì, 19/07/2012
Che vorrei migliorare la classe Articolo gestendo internamente questa parte

Codice sorgente - presumibilmente C#

  1. private int StringToInt(string val)
  2.             {
  3.                 int result;
  4.      
  5.                 bool success;
  6.      
  7.                 success = Int32.TryParse(val, out result);
  8.      
  9.                 return result;
  10.             }
  11.      
  12.      
  13.             private decimal StringToDecimal(string val)
  14.             {
  15.                 decimal result;
  16.      
  17.                 bool succes;
  18.      
  19.                 succes = decimal.TryParse(val, out result);
  20.      
  21.                 return result;
  22.             }





L'apprendista di C#...
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6109
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 22:53
Venerdì, 20/07/2012
Prova con:

Codice sorgente - presumibilmente C#

  1. {
  2.    int iResult;
  3.    decimal dResult;
  4.  
  5.    Descrizione = row[0].ToString(),
  6.    Qta = Int32.TryParse(row[1].ToString(), out iResult) ?  iResult : 0,
  7.    Numero = Int32.TryParse(row[2].ToString(), out iResult) ?  iResult : 0,
  8.    Prezzo = decimal.TryParse(row[3].ToString(), out dResult) ? dResult : 0
  9. };



Non sono sicuro che C# te lo lasci fare... ma tanto vale provare. Forse qualcuno piu' esperto puo' confermare o correggere.

Ultima modifica effettuata da pierotofy il 20/07/2012 alle 22:58


Seguimi su Twitter: http://www.twitter.com/pierotofy

Fai quello che ti piace, e fallo bene.
PM Quote
Avatar
sps84 (Normal User)
Pro


Messaggi: 192
Iscritto: 11/02/2009

Segnala al moderatore
Postato alle 20:22
Lunedì, 23/07/2012
provato purtroppo non funziona, al limite inserirsco il metodo nella classe


L'apprendista di C#...
PM Quote