मैं कंसोल पर क्लास ऑब्जेक्ट के अंदर मानों को आउटपुट करना चाहता हूं। यहाँ मेरा कोड है। यह काम नहीं करेगा। कोई त्रुटि नहीं है, लेकिन यह मानों को आउटपुट नहीं करेगा। यह मेरा तरीका है।

public ClsPayeDetails get_paydetail_byrow(int rowno)
{

    string sql = "SELECT * FROM s07_01_payeDetails WHERE row_no='"+rowno+"'";
    DataRow dr = LogIn.HR_Connection.GetSingleRow(sql);
    ClsPayeDetails obj_det = null;
    if (dr != null)
        {
            obj_det = new ClsPayeDetails(
                decimal.Parse(dr["reducing_value"].ToString()),
                dr["financial_year"].ToString(),
                decimal.Parse(dr["lower_limit"].ToString()),
                decimal.Parse(dr["upper_limit"].ToString()),
                decimal.Parse(dr["percentage"].ToString())
                );
        }

        Console.WriteLine(obj_det.ToString());
        return obj_det;
 }        
// and this is where i call it. I think i'm doing this in incorrect way. //Any help would be appreciated.

 private void testDetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cc_payroll.pyrl_cls_master.ClsPayeDetails dd = new cc_payroll.pyrl_cls_master.ClsPayeDetails();
            dd.get_paydetail_byrow(1);                  
        }   
0
Didu 30 जून 2017, 06:58

4 जवाब

सबसे बढ़िया उत्तर

अपना कोड बदलें

Console.WriteLine(obj_det.ToString());

प्रति

Console.WriteLine(obj_det.getXXXXXXX().ToString());

GetXXXXXXX() क्लास ClsPayeDetails में आपकी विशेषता है।

1
Antti29 30 जून 2017, 08:54

ToString() फ़ंक्शन को 'एकल मान ऑब्जेक्ट' जैसे int, string ... आदि के मान को वापस करने के लिए डिज़ाइन किया गया है अन्यथा यह ऑब्जेक्ट प्रकार देता है।
तो आपको यह करना होगा:

  1. अपनी कक्षा 'ClsPayeDetails' में फ़ंक्शन Tostring() को ओवरराइट करें, न कि प्रकार का मान वापस करने के लिए
  2. ऑब्जेक्ट के गुण और उसके मान स्वचालित रूप से प्राप्त करें।

    आप इस कोड को वैसे ही इस्तेमाल कर सकते हैं जैसे यह है या आप जो भी स्ट्रिंग चाहते हैं उसे वापस कर सकते हैं।

    public override string ToString()
    {
        string result = "";
        foreach (System.Reflection.PropertyInfo p in this.GetType().GetProperties())
        {
            if (!string.IsNullOrEmpty(result)) result += Environment.NewLine;
            result += p.Name + ": " + p.GetValue(this);
        }
        return result;
    }
    
1
Ahmed Abdallah 30 जून 2017, 09:31

आप अपनी ClsPayeDetails कक्षा में override string ToString फ़ंक्शन का उपयोग कर सकते हैं

public class ClsPayeDetails
{
    //Your property class

    public override string ToString()
    {
        System.Text.StringBuilder val = new System.Text.StringBuilder();
        val.Append(string.Format("reducing_value = {0},", reducing_value));
        val.Append(string.Format("financial_year = {0},", financial_year));
        val.Append(string.Format("lower_limit = {0},", lower_limit));
        val.Append(string.Format("upper_limit = {0},", upper_limit));
        val.Append(string.Format("percentage = {0},", percentage));
        return val.ToString();
    }
}
0
Tien Nguyen Ngoc 30 जून 2017, 07:40

इससे मेरी समस्या हल हो गई। मैंने अपनी विधि को स्थिर बना दिया और फिर कक्षा द्वारा पहुँचा।

  private void testDetToolStripMenuItem_Click(object sender, EventArgs e)
        {
            cc_payroll.pyrl_cls_master.ClsPayeDetails dd = ClsPayeDetails.get_paydetail_byrow(2);
            Console.WriteLine(dd.FinancialYear.ToString());
            Console.WriteLine(dd.lowerLimit.ToString());
            Console.WriteLine(dd.upperLimit.ToString());
            Console.WriteLine(dd.percenTage.ToString());
            Console.WriteLine(dd.adjust.ToString());

        }

और विधि है

  public static ClsPayeDetails get_paydetail_byrow(int rowno)
        {
                string sql = "SELECT * FROM s07_01_payeDetails WHERE row_no='" + rowno + "'";
                DataRow dr = LogIn.HR_Connection.GetSingleRow(sql);
                ClsPayeDetails obj_det = null;
                if (dr != null)
                {
                    obj_det = new ClsPayeDetails(
                        decimal.Parse(dr["reducing_value"].ToString()),
                        dr["financial_year"].ToString(),
                        decimal.Parse(dr["lower_limit"].ToString()),
                        decimal.Parse(dr["upper_limit"].ToString()),
                        decimal.Parse(dr["percentage"].ToString())
                        );
                }
                else
                {
                    MessageBox.Show("This row does not exist !", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            return obj_det;
        }
0
Didu 30 जून 2017, 13:32