class A
{
}class B
{
A a; B()
{
a = new A();
}
}和class A
{
}class B
{
A a = new A(); B()
{
}
}然后调用B b = new B();
b.xxx
这两种写法效果好象是一样的,但具体有什么区别呢?
第二种方式那个 A a = new A(); 也是在创建类实例 new B() 的时候才 new 的吧?还是在编译时 new 的?哪位能给我讲讲,多谢!
{
}class B
{
A a; B()
{
a = new A();
}
}和class A
{
}class B
{
A a = new A(); B()
{
}
}然后调用B b = new B();
b.xxx
这两种写法效果好象是一样的,但具体有什么区别呢?
第二种方式那个 A a = new A(); 也是在创建类实例 new B() 的时候才 new 的吧?还是在编译时 new 的?哪位能给我讲讲,多谢!
解决方案 »
- 关于dataset更新时错误提示要求有效的UpdateCommand
- DevExpress.XtraGrid.Views.Grid.GridView 怎样才能选择多行记录?
- 刚学模块化,求错。谢谢
- 紧急求救,怎么在窗体1调用窗体2的按钮事件?
- microsoft sql server 2005 express edition x86 安装失败
- 如果两个函数无参数,无返回值,且函数名不确定,请问有何办法来让别的程序确定调用那个
- VS2005中的webform上的控件位置怎么自由放置呀?
- 怎样用C#动态创建ODBC数据源(DSN)
- 问一个datagridview的问题:
- C# 将excel文件导入到sqlce数据库中
- 关于HttpWebRequest的问题
- 调用ORACLE存储过程时出现TNS错误,高手请进
{
}
class B
{
A a; B()
{
a = new A();
}
}这里的new A();是在创建类B的对象时new的。
class A
{
}class B
{
A a = new A(); B()
{
}
}这里 A a = new A();
这里a作为类B的成员,并初始化。
实例字段的变量初始值设定项不能引用正在创建的实例。因此,在变量初始值设定项中引用 this 是编译时错误,同样,在变量初始值设定项中通过简单名称引用任何一个实例成员也是一个编译时错误。在下面的示例中class A
{
int x = 1;
int y = x + 1; // Error, reference to instance member of this
}
y 的变量初始值设定项导致编译时错误,原因是它引用了正在创建的实例的成员。--->摘自MSDN
class Test
{
static int a = b + 1;
static int b = a + 1;
static void Main() {
Console.WriteLine("a = {0}, b = {1}", a, b);
}
}
显示此行为。尽管 a 和 b 的定义是循环的,此程序仍是有效的。它产生以下输出:a = 1, b = 2
这是因为静态字段 a 和 b 在它们的初始值设定项执行之前被初始化为 0(int 的默认值)。当 a 的初始值设定项运行时,b 的值为零,所以 a 被初始化为 1。当 b 的初始值设定项运行时,a 的值已经为 1,因此 b 被初始化为 2。--->摘自MSDN