Возможный дубликат:
Какая разница между Response.Write() и Response.Output.Write()?
как он отличается от response.write() и response.output.write(), объясняет проблему с благодарностью.
Возможный дубликат:
Какая разница между Response.Write() и Response.Output.Write()?
как он отличается от response.write() и response.output.write(), объясняет проблему с благодарностью.
Разница между Response.Write() и Response.Output.Write() в ASP.NET. Короткий ответ заключается в том, что последний дает вам выход String.Format-style, а первый - нет. Долгий ответ следует.
В ASP.NET объект Response имеет тип HttpResponse, и когда вы говорите Response.Write, вы действительно говорите (в основном) HttpContext.Current.Response.Write и вызываете один из многих перегруженных методов Write HttpResponse.
Response.Write затем вызывает .Write() на нем внутренний объект TextWriter:
public void Write(object obj){ this._writer.Write(obj);}
HttpResponse также имеет свойство, называемое Output, которое имеет тип, да, TextWriter, поэтому:
public TextWriter get_Output(){ return this._writer; }
Это означает, что вы можете сделать Response все, что a TextWriter позволит вам. Теперь TextWriters поддерживают метод Write() aka String.Format, поэтому вы можете сделать это:
Response.Output.Write("Scott is {0} at {1:d}", "cool",DateTime.Now);
Но внутренне, конечно, это происходит:
public virtual void Write(string format, params object[] arg)
{
this.Write(string.Format(format, arg));
}
Здесь Response.Write(): для отображения только строки, и вы не можете отображать какие-либо другие значения типа данных, такие как int, date и т.д. Преобразование (из одного типа данных в другое) недопустимо. тогда как Response.Output.Write(): вы можете отображать любые типы данных, такие как int, date, string и т.д., указав значения индекса.
Вот пример:
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write ("hi good morning!"+"is it right?");//only strings are allowed
Response.Write("Scott is {0} at {1:d}", "cool", DateTime.Now);//this will give error(conversion is not allowed)
Response.Output.Write("\nhi goood morning!");//works fine
Response.Output.Write("Jai is {0} on {1:d}", "cool", DateTime.Now);//here the current date will be converted into string and displayed
}
Response.write() используется для отображения обычного текста, а Response.output.write() используется для отображения форматированного текста.
Ничего, они синонимы (Response.Write - это просто более короткий способ выразить акт записи на выход ответа).
Если вам интересно, реализация HttpResponse.Write выглядит так:
public void Write(string s)
{
this._writer.Write(s);
}
И реализация HttpResponse.Output такова:
public TextWriter Output
{
get
{
return this._writer;
}
}
Итак, как вы можете видеть, Response.Write и Response.Output.Write являются действительно синонимичными выражениями.
Response.write() не дает форматированного вывода. Последний позволяет вам писать форматированный вывод.
Response.write - он записывает текстовый поток Response.output.write - он записывает поток вывода HTTP.