Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有人能解释一下c#语法吗?_C#_Syntax - Fatal编程技术网

有人能解释一下c#语法吗?

有人能解释一下c#语法吗?,c#,syntax,C#,Syntax,我很难理解这个语句中嵌套的括号。有人能解释一下吗?我理解HttpWebRequest类根据定义继承了WebRequest类,但我不理解为什么这样写,为什么不将request创建为HttpWebRequest的实例,而不是WebRequest。尝试过,但无法编译。提前谢谢 var request = WebRequest.Create(new Uri(url)); ((HttpWebRequest)request).AllowReadStreamBuffering = false; 这只是将请求

我很难理解这个语句中嵌套的括号。有人能解释一下吗?我理解
HttpWebRequest
类根据定义继承了
WebRequest
类,但我不理解为什么这样写,为什么不将request创建为
HttpWebRequest
的实例,而不是
WebRequest
。尝试过,但无法编译。提前谢谢

var request = WebRequest.Create(new Uri(url));
((HttpWebRequest)request).AllowReadStreamBuffering = false;

这只是将请求强制转换为HttpWebRequest


请查看文档

WebRequest.Create可能会返回同一接口的不同实现,这就是为什么它不能成为构造函数的原因,也是为什么您必须执行类型转换才能真正拥有对类的完全访问权,而不是只访问接口中可用的方法的原因,如果你知道当你把xyz传递到create中应该是什么。如果不是,强制转换将失败。

这只是将
request
强制转换为
HttpWebRequest
,它具有
AllowReadStreamBuffering
属性。这是一个
HttpWebRequest
,但它被引用为
WebRequest
。看看返回的内容:
WebRequest
。因此,您必须在调用l
Create
的位置强制转换它,或者在使用
AllowReadStreamBuffering
的位置后一行强制转换它。我不确定这样做是否是询问其他人代码解释的最佳位置。祝你平安