Я не использовал это сам, но я считаю, что он должен работать в теории (:
// service.ts
getSomething() {
let subject: Subject = new Subject();
this._restService.addRequest('object', 'method').run()
.subscribe(subject);
return subject;
}
// this can be removed (;
returnSomething() {
return this.getSomething();
}
// component.ts
ngOnInit() {
this.service.returnSomething()
.subscribe(res => console.log(res), err => console.log(err));
}
Для получения дополнительной информации проверьте subject docs . Вы можете использовать разные типы например, BehaviorSubject имеет свойство value
, доступ к которому вы можете получить ...
ngOnInit() {
// if you use BehaviorSubject
this.service.returnSomething().value
}
Вы возвращаете строку, которая просто говорит фразу _name + _number + _date + _salary
.
То, что вы, вероятно, хотели сделать, это построить строку, используя эти поля. Если вы хотите, чтобы все они были собраны вместе Concat , он был бы очень не читаемым
public override string ToString()
{
return String.Concat(_name, _number, _date, _salary);
}
Однако было бы лучше использовать Format и включают метки со значениями
public override string ToString()
{
return String.Format("Name:{0}, Number:{1}, Date:{2}, Salary:{3}",_name, _number, _date, _salary);
}
. Если вы используете C # 6 или новее, вы можете использовать следующий формат очистки
public override string ToString()
{
return $"Name:{_name}, Number:{_number}, Date:{_date}, Salary:{_salary}";
}
. Который является точным той же логики, что и предыдущая версия String.Format
.
Скорее попробуйте что-то вроде
public override string ToString()
{
return String.Format("Name : {0}, number {1}, date {2}, salary {3}",_name,_number,_date,_salary);
}
Но это не входит в класс
, поэтому
class Employee
{
private string _name;
private string _number;
private int _date;
private int _salary;
.....
public override string ToString()
{
return String.Format("Name : {0}, number {1}, date {2}, salary {3}",_name,_number,_date,_salary);
}
}
Посмотрите на String.Format Method
Заменяет каждый элемент формата в указанной строке текстовым эквивалентом значения соответствующего объекта.
blockquote>
Если вы используете C # 6 (или более позднюю версию), используйте метод nameof()
для имен свойств в строке в случае изменения имен свойств. Вы также можете использовать нотацию $""
вместо использования string.Format ().
Например:
public override string ToString()
{
return $"{nameof(Name)}: {_name}";
}
Без переопределения ToString, если вы попытались «получить» строковое значение Employee, например
var employee1= new Employee();
Console.WriteLine(employee1);
Что вы получите:
ConsoleApplication1.Program + Employee
, который не предоставляет никакой информации, чтобы помочь вам (или пользовательскому интерфейсу) отображать релевантную информацию.
Я использую return _name + _number + _date + _salary;
. По умолчанию используется строка,
или более подробный
return "Name:" + _name + " Number:" + _number + " etc...";
Причина, по которой люди переопределяют метод ToString()
, состоит в том, чтобы иметь стандартное строковое представление вашего объекта, обычно для отображения пользователю или журналу или консоли, например:
Console.WriteLine(yourClassObject);
Если вы не переопределяете ToString()
, тогда его реализация по умолчанию должна вернуть полное имя вашего объекта, например:
YourNamespace.YourClassName
Изменяя унаследованную реализацию (из System.Object
), тогда вы можете сделать более приятное (чтение: более красивое) представление, например:
public override string ToString()
{
return String.Format("This instance of my object has the following: Name = {0}, Number = {1}, Date = {2}, Salary = ${3}", _name, _number, _date, _salary);
}
Вы можете попытаться отформатировать вывод в хорошем формате. (не проверено, хотя)
public override string ToString()
{
return string.Format("Name: {0} Number: {1:n0} Date: {2:yyyy-MM-dd} Salary: {3:n2}", _name, _number, _date, _salary);
}
существует множество целей, переписывающих .ToString (), в зависимости от контекста. например,
действительно зависит от контекста вашего необходимо. вы можете найти некоторые хорошие практики, чтобы следить за ними в Интернете - верьте, что в Интернете много ресурсов.