В чем разница между Response.Write() иResponse.Output.Write()?
Возможный дубликат:
Какая разница между Response.Write() и Response.Output.Write()?
как он отличается от response.write() и response.output.write(), объясняет проблему с благодарностью.
Ответы
Ответ 1
Смотрите это:
Разница между 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));
}
Ответ 2
Здесь 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
}
Ответ 3
Response.write()
используется для отображения обычного текста, а Response.output.write()
используется для отображения форматированного текста.
Ответ 4
Ничего, они синонимы (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
являются действительно синонимичными выражениями.
Ответ 5
Response.write() не дает форматированного вывода.
Последний позволяет вам писать форматированный вывод.
Response.write - он записывает текстовый поток
Response.output.write - он записывает поток вывода HTTP.