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)
Expert


Messaggi: 202
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: 5702
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 ...
---
Il grande studioso italiano Bruno de Finetti (uno dei padri fondatori del moderno Calcolo delle probabilità) chiamava il gioco del Lotto Tassa sulla stupidità.
PM Quote
Avatar
sps84 (Normal User)
Expert


Messaggi: 202
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: 6197
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)
Expert


Messaggi: 202
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