假设我有一个静态属性,如下所示:
public static object MyProperty
{
get { return new object(); }
}
上面的属性是一样的吗?
private static object my_filed = new object();
public static object MyProperty
{
get { return my_filed; }
}
即:是每次调用静态属性时创建的新对象还是仅第一次创建的新对象?
每次读取属性时都会执行属性getter,因此每次都会创建一个新的对象实例。
两种机制是不同的。在第一个中,它每次都会创建新对象。
虽然Static methods/variables与类定义相关联,但是只要调用该方法,就会执行在静态方法中编写的代码。在您的示例中,您编写了创建新对象实例的语句,因此每当调用该方法时它将创建一个新对象实例。
不,这不对。
public static object MyProperty
{
get { return new object(); }
}
每次都会返回一个新的对象实例,这可能不是你想要的,并且
private static object my_filed = new object();
public static object MyProperty
{
get { return my_filed; }
}
每次将返回类对象的相同实例,使其成为单例。
静态属性类似于静态方法。它使用要访问的复合名称。静态属性使用与实例属性相同的 get 和 set 标记。在您的程序中,第一种情况每次都会创建新对象。二不。
要知道正确的答案,您需要知道什么是属性。属性只不过是一种对您隐藏的方法。
var myVar = MyClass.MyProperty无非如此var myVar = MyClass.get_MyProperty()。所以当你打电话时:
public static Object MyProperty
{
get { return new Object(); }
}
您正在调用一个每次创建一个新对象的方法。所以答案是否定的,代码不一样。static 修饰符还有其他作用。