黑马程序员技术交流社区

标题: 实例化的问题求解 [打印本页]

作者: 丁慧    时间: 2012-8-8 15:32
标题: 实例化的问题求解
tb_dictionary tbDicty = new tb_dictionary();   
OleDbCommand oledcmd = null;
请教一下大家,什么时候实例化用第一个方式,什么时候是直接对它进行赋值的,还是都可以???
作者: 许庭洲    时间: 2012-8-8 16:02
当在某个类例如China类中定义个字段叫city ,  public string  city=" "; 若想调用字段city时,这时候就必须实例化对象了, China c=new China();   c.city="Hong Kong";
作者: 丁慧    时间: 2012-8-8 16:13
许庭洲 发表于 2012-8-8 16:02
当在某个类例如China类中定义个字段叫city ,  public string  city=" "; 若想调用字段city时,这时候就必须 ...

我们编写的类,使用时要实例化,那vs中自带的呢?
作者: 许庭洲    时间: 2012-8-8 16:34
本帖最后由 许庭洲 于 2012-8-8 17:07 编辑

VS中自带的都是老外打包封装好了的,最好别修改,否则在以后的开发中会出现项目开发出现麻烦!

举一个VS中自动生成某个字段的属性,很神奇吧!
可以在Visual Studio c#开发环境下,将光标放在声明中要封装的字段的名称上,点鼠标右键,选择封装字段,即可自动生成该字段的属性。
例如:将光标放在单词 age 上:public int age, sex;  还可以右击光标,指向“重构”,然后单击“封装字段”以显示“封装字段”对话框。
         VS自动生成以下代码:
          public int Age  //VS自动将age中首字母a转化为大写的A
         {
              get
              {
                     return age;
              }
              set
              {
                     age= value;
              }
}//希望对你有帮助!


作者: 冯华亮    时间: 2012-8-8 16:47
实例化时候的那个new用于创建对象和调用构造函数。这就是它的用途了。如果不是实例化时候调用的new那是有其它含义的。比如可以用于向基类成员隐藏继承成员。iint,float,char等等是预定义的值类型,存放于堆栈中。string虽然是预定义的引用类型,存放于堆中。C#为了使语义遵循一般的,直观的字符串规则,对字符串的运算符(如"+"运算符)进行了重载。总结一下。值类型存放于堆栈,不用实例化。引用类型存放于堆,需要用new运算符实例化。为什么string不用实例化呢。其实string是披着羊皮的狼。由于作了特殊处理,string s="黑马";这条语句编译器会认为是与string s=new string("黑马")等效的。
作者: 郭张浩    时间: 2012-8-8 16:56
补充说下:只要是没有加static的方法或者属性都必须先实例化再通过实例名.方法名或实例名.属性来访问
加static的方法或者属性可以直接通过类名.方法名或者类名.属性来访问
作者: 王峰    时间: 2012-8-8 17:03
在面向对象的编程中,通常把用类创建对象的过程称为实例化,其格式如下:   类名 对象名 = new 类名(参数1,参数2...参数n)   (这里,“类名”这个类名实例化成了“对象名”这个对象)   如 Date date=new Date();就是用日期类创建了一个日期的对象,就叫对象的实例化。   多数语言中,实例化一个对象 其实就是在内存中开放一个空间 用于存储新的产物,即对象。   例如一个类class A{   .....   }   A a=new A();
作者: 梁健1    时间: 2012-8-9 18:22
简单的区别就是看有没有static作为访问修饰符,在一个类中的方法一有static修饰,则可以类名.方法一直接调用方法,有时要注意看引用了没;如果没有static修饰,就得先实例化,然后在调用;




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2