我很难解决这个问题,而且似乎缺少光泽的文档。 例如,这段代码:
private static readonly Object obj = new Object();
有人可以解析这段代码并解释这里发生了什么。创建的这个新对象的确切属性是什么?为什么要用这种方式创建对象?
答案 0 :(得分:6)
您将创建一个类型为Object
的新对象。在大多数情况下,类似这样的语句用于锁定帐户,有关更多信息,请参见https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/lock-statement。
答案 1 :(得分:4)
它只是创建类型为Object
的对象,该对象是所有C#引用类型的基本类型。
我有4种方法:
ToString()
GetHashCode()
GetType()
Equals()
每个类都派生出Object形式,因此它具有上述所有方法。
此外,其中3种方法是虚拟的(因此您可以覆盖它们):
ToString()
GetHashCode()
Equals()
有时它会像Isitar在他的回答中提到的那样用于锁定。
答案 2 :(得分:1)
except Exception
声明了Object类型的变量
extension SaleViewController: CollectionViewFlowLayoutDelegate{
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
guard let flowLayout = self.myCollectionView.collectionViewLayout as? CustomLayout else {
return
}
flowLayout.invalidateLayout()
}
func height(at indexPath: IndexPath) -> CGFloat {
guard let cell = self.myCollectionView.cellForItem(at: indexPath) else {
return 1
}
cell.layoutIfNeeded()
//get calculated cell height
return cell.systemLayoutSizeFitting(UILayoutFittingCompressedSize).height
}
}
等号是赋值,new运算符创建对Object类的新实例的引用,而Object()的默认部分将其初始化。
它将具有对象的默认属性。