Zoro Zoro - 1 month ago 11
C# Question

Override .ToString method c#

Okay, so I wrote this program out of the exercise of a C# programming book (I'm trying to learn here) and it asks for "Override the ToString() method to return all data members".

Have I done this correctly? Or have I just successfully wrote code that compiles but does nothing. What is the purpose of ToString?

I have spent about 30 minutes looking at other posts on this and havn't figured it out, So I decided to make this.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication297
{
class Program
{
static void Main(string[] args)
{
String name = "Stormtrooper";
Employee s = new Employee(name);
Console.WriteLine("The type of hire is a {0}", s.Name);
Console.WriteLine("The identification number is {0}", s.Number);
Console.WriteLine("The date of hire is {0} ABY", s.Date);
Console.WriteLine("The standard galactic salary is...{0:C}", s.Salary);

}

class Employee
{
private string _name;
private string _number;
private int _date;
private int _salary;
public string Name
{
get
{
return _name;
}
}

public string Number
{
get
{
return _number;
}
}

public int Date
{
get
{
return _date;
}
}
public int Salary
{
get
{
return _salary;
}
}
public Employee(string n)
{
_name = n;
_number = "AA23TK421";
_date = 4;
_salary = 800;
}
}

public override string ToString()

{
return "_name + _number + _date + _salary".ToString();
}
}
}

Answer

You are returning a string that just says the phrase _name + _number + _date + _salary.

What you likely wanted to do is build a string using those fields. If you wanted them all mushed together Concat would work, but it would be highly un-readable

public override string ToString()
{
    return String.Concat(_name, _number, _date, _salary);
}

However what would be better is to use Format and include labels with the values

public override string ToString()
{
    return String.Format("Name: {0}, Number:{1}, Date:{2}, Salary:{3}",_name, _number, _date, _salary);
}