1 默认情况下,类型成员是隐式私有的,而类型是隐式内部的。如下的类定义自动设置为内部的,
而类型的默认构造函数自动设置为私有的。class Radio
{
Radio(){}
}"类型成员是隐式私有的,而类型是隐式内部的"怎么理解??
2、namespace StaticMethods
{
  class Teenager
  {
    public static Random r = new Random();    public static int GetRandomNumber(short upperLimit)
    {
      Console.WriteLine( r.Next(upperLimit));
      return r.Next(upperLimit);
    }    public static string Complain()
    {
      string[] messages = {"Do I have to?", "He started it!", 
    "I'm too tired...", "I hate school!", 
    "You are sooooooo wrong!"};
      return messages[GetRandomNumber(5)];
    }
  }
}
静态成员只能操作静态数据或调用类的静态方法,如果你尝试在静态成员实现中使用非静态类数据或类非静态方法,则编译错误。Complain() 是静态方法 为何包含 非静态数据 string[] message ??? public static Random r = new Random(); 自带的随机数类 Random 既然在此声明为静态的 ,为何还用它实例化?3
FireThisMan(Employee emp);
Employee moon1=new Manager("Zappa",2,3001,200); //Manager派生自 Employee
FierThisMan(moon1);//FireThisMan是Program类中定义的方法//不能通过编译
Object moon2=new Manager("Zappa",2,3001,200);
FireThisMan(moon2);
//改为 FireThisMan((Manager)moon2)  通过编译这里Manager 相对于 Pbject 来说是派生类, 派生类强制转换基类 就不太理解了以上问题,路过的哥们帮忙看看,小弟先谢过了!!!

解决方案 »

  1.   

    1.没有public属性 ,你无法在外部访问到类里面的方法和成员
    2.如果你尝试在静态成员实现中使用非静态类数据或类非静态方法,则编译错误。  指的是类的非静态成员域和非静态成员方法。
    3.FireThisMan()的参数当然要一致了,要不然找不到对应的函数的!
    呵呵  希望楼主继续学习!.net开发起来很快的!
      

  2.   

    1.也就是说
    class Radio 

    Radio(){} 
    }
    相当于:
    internal class Radio //internal表示只能在同一程序集中使用

    private Radio(){} 
    }
    2.静态成员只能操作静态数据或调用类的静态方法
    其中的静态数据指的是类的静态数据,而string[] messages只是定义的局部变量,并不是类的静态数据
    3.
    派生类可以作为基类来使用,也就是说派生类可以强制转换成基类,当派生类写了基类的某些方法时,将使用派生类重写的方法。
      

  3.   

    "类型成员是隐式私有的,而类型是隐式内部的"怎么理解?? 
    --------------
    就是说 类型是 你不写访问修饰的情况下,等同于 写了 internal访问修饰
    而成员不写的情况等同于你写了 private那么 
    class a{ 
      a(){}
    }
    等同于
    internal a{
      private a(){}
    }
    静态成员只能操作静态数据或调用类的静态方法,如果你尝试在静态成员实现中使用非静态类数据或类非静态方法,则编译错误。 Complain() 是静态方法 为何包含 非静态数据 string[] message ??? public static Random r = new Random(); 自带的随机数类 Random 既然在此声明为静态的 ,为何还用它实例化?
    ----------------------------------------
    string[] mess...这个是在 方法内部定义的 “本地变量”  这里所谓的非静态数据是指,可用this指针 访问到的类成员
    静态成员 Random这个本身是可实例化的一个类型 C#2.0中有一种类型叫做不能实例化的 static类型,
    比如 : static class a{}, 但 一般的类型 可以成为 静态成员 比如这里的Random这里Manager 相对于 Pbject 来说是派生类, 派生类强制转换基类 就不太理解了 
    --------------------------------------------------------------
    派生类,也就是子类, 子类是基类的扩展,因此,子类可以转化基类,这不会超出范围,因为是扩展者向基本者的转换,但反过来不可以,会超出定义范围,
      

  4.   

    1.也就是说 
    class Radio 

    Radio(){} 

    相当于: 
    internal class Radio //internal表示只能在同一程序集中使用 

    private Radio(){} 

    2.静态成员只能操作静态数据或调用类的静态方法 
    其中的静态数据指的是类的静态数据,而string[] messages只是定义的局部变量,并不是类的静态数据 
    3. 
    派生类可以作为基类来使用,也就是说派生类可以强制转换成基类,当派生类写了基类的某些方法时,将使用派生类重写的方法。
    `````````````
      

  5.   

    public 是访问修饰符 不是什么类型!!
      

  6.   

    第一个的意思应该是在类里面定义   int a  等价于  private int a   
      

  7.   


    太谢谢你的 耐心讲解了!!!!“派生类,也就是子类, 子类是基类的扩展,因此,子类可以转化基类,这不会超出范围,因为是扩展者向基本者的转换,但反过来不可以,会超出定义范围,

    以前看过些c++,c++ 中关于基类派生类的转化问题当时是这样理解的我(也一直在这样用,证明是正确的,也是从内存分配角度理解的):用基类强制转化派生类,因为派生类有基类(公共)部分;派生类是不可以强制转化基类的,因为基类没有派生类派生的那部分。哥们你的解释c#这个,我们的出发点好像刚好相反!!!
    2、
    class AA {}
    cladd BB:AA {}AA aa=new AA();
    BB bb=new BB();
    Object oo=new Object();bb is AA;  // true
    aa is BB;  // falseoo is AA;  // false
    oo is BB;  // falseaa is Object; // true
    bb is Object; //true基类对象(初Object实例)向上兼容其派生类型。 (按照你从“范围大小”出发的观点)但Object的实例刚好相反
    哥们有何高见啊??方便的话加我啊QQ 410169815
      

  8.   

    但Object的实例刚好相反 
    ---------------------
    没有哦,你可以这样试一下object o=new object();// 构造 一个基类Control c=(Control)o; //ERROR 这里想把一个基类实例 转换为它的子类形式,结果就会出错,如果你用as 那么结果就是null