gpt4 book ai didi

c# - 为什么我们不能在另一个类方法之外使用类方法?

转载 作者:太空狗 更新时间:2023-10-30 00:42:39 25 4
gpt4 key购买 nike

这是我的问题:

class A
{
B mB = new B(); //this is fine
int y = mB.method1(); //this is error;

public void method2()
{
int x = mB.method1(); //this is fine
}
}

谁能解释一下上面的区别?

最佳答案

fields 的初始化(与声明同时)必须在类的实例上使用类中的方法。

由于不允许在初始化字段时引用实例本身(参见 C# 语言引用版本 4.0 中的 10.5.5.2 节和 the comment by Eric Lippert)(因为字段初始化发生在任何构造函数执行之前),这是不可能。

如果调用的方法是静态的(因此在类型上声明),那么您可以调用它,因为静态成员在实例成员之前初始化..


现在,无法保证字段初始化的顺序 - 这意味着编译器可能决定在 mB 之前初始化 y。在这种情况下,如果允许在一个字段上调用方法来初始化另一个字段,您将得到一个 NullReferenceException。最好首先避免这个问题,不要允许这种行为。

关于c# - 为什么我们不能在另一个类方法之外使用类方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14282335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com