为什么FtpWebRequest不能用new创建对象,当用new创建对象时错误提示FtpWebRequest未定义构造函数。如果是在类中没有定义构造函数系统不是会默认创建一个吗?而用本身的Create方法又能创建对象,FtpWebRequest是怎样定义的而如此的玄妙这个问题困扰了我很久,希望能和大神共同探讨下。对象

解决方案 »

  1.   

    有意思!曾经做一个项目用到TFP下载,那时候整天和FtpWebRequest这个类打交道,对它也算非常熟悉,但从来没有想过楼主提出的问题。我也想知道,望楼下解答
      

  2.   

    public sealed class FtpWebRequest
    {
      
    }
    //知道为什么不能实例化了吗
      

  3.   

    我想大概的FtpWebRequest类的构造继承了父类的构造函数,而父类的构造函数又是一个虚函数
      

  4.   

    错了
    说成继承了,错了
    构造函数应该是private
      

  5.   

    错了
    说成继承了,错了构造函数应该是private私有的构造函数是不能创建对象的因为他的Create方法又能创建对象,而且如果是私有的话编译器不会提示未定义构造函数而是报“该类不可访问,因为他受级别保护”。
      

  6.   

    FtpWebRequest的父类是WebRequest但是我进MSDN查了下WebRequest的构造函数不是虚函数
      

  7.   

    FtpWebRequest的父类是WebRequest但是我进MSDN查了下WebRequest的构造函数不是虚函数
    那么我就不知道了,望楼下解答
      

  8.   

    FtpWebRequest的父类是WebRequest但是我进MSDN查了下WebRequest的构造函数不是虚函数
    那么我就不知道了,望楼下解答
    或者你在百度上搜索“未定义构造函数”,网上有人也贴了类似的例子。FtpWebRequest可能就属于里面的其中一种
      

  9.   

    internal FtpWebRequest(Uri uri)
    {
    new WebPermission(NetworkAccess.Connect, uri).Demand();
    if (Logging.On)
    {
    Logging.PrintInfo(Logging.Web, this, ".ctor", uri.ToString());
    }
    if (uri.Scheme != Uri.UriSchemeFtp)
    {
    throw new ArgumentOutOfRangeException("uri");
    }
    this.m_TimerCallback = new TimerThread.Callback(this.TimerCallback);
    this.m_SyncObject = new object();
    NetworkCredential networkCredential = null;
    this.m_Uri = uri;
    this.m_MethodInfo = FtpMethodInfo.GetMethodInfo("RETR");
    if (this.m_Uri.UserInfo != null && this.m_Uri.UserInfo.Length != 0)
    {
    string userInfo = this.m_Uri.UserInfo;
    string userName = userInfo;
    ........................对于这类简单问题,要养成自己看源代码的习惯。