gpt4 book ai didi

c# - 在证明静态类时这意味着什么?

转载 作者:太空宇宙 更新时间:2023-11-03 18:19:50 24 4
gpt4 key购买 nike

1) 静态类成员可用于分离独立于任何对象身份的数据和行为:无论对象发生什么,数据和函数都不会改变。当类中没有依赖于对象标识的数据或行为时,可以使用静态类。

不管对象发生什么,函数都不会改变是什么意思?功能如何改变?静态变量,是的,但是函数?

“对象标识”是什么意思?例如,房子对象中的特定房子吗? (所以我们处理一个特别选择的房子)。那么静态类不适用于任何房屋对象?

2) 如果我不使用实例状态,我是否应该始终使用静态类?使用实例状态的静态类和实例类之间有什么区别?我能想到的是静态类将只有 1 个实例,因此 1 个实例意味着如果该类使用实例状态(如果有线程同步),许多调用将排队?显然,静态应该只需要一个静态类。

这是正确的吗?

最佳答案

我倾向于将静态方法视为一种创建与特定类相关的辅助函数的方式,这样我就可以在全局范围内使用它们而无需实例化任何对象。一个非常简单的例子是:

public class Person
{
private string name;
private DateTime dob;

public Person(string name, DateTime dob)
{
this.name = name;
this.dob = dob;
}

public int Age { get { return CalculateAge(this.dob); } }
public string Name { get { return this.name; } }

public static int CalculateAge(DateTime dob)
{
// use dob to work out age.
}

}

所以在上面的场景中你可以看到如果我创建一个人对象,我可以使用只读属性封装年龄的计算。但是,如果我需要根据日期计算某人的年龄,而不是特定的人对象,我可以使用静态方法,即

// object usage
var p = new Person("Joe Bloggs", DateTime.Parse("10/11/1981"));
Console.WriteLine(p.Age);

// static usage
Console.WriteLine(Person.CalculateAge(DateTime.Parse("10/11/1981"));

关于c# - 在证明静态类时这意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1081191/

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