new object()在C#中到底做了什么

时间:2018-11-18 21:30:04

标签: c#

我很难解决这个问题,而且似乎缺少光泽的文档。 例如,这段代码:

private static readonly Object obj = new Object();

有人可以解析这段代码并解释这里发生了什么。创建的这个新对象的确切属性是什么?为什么要用这种方式创建对象?

3 个答案:

答案 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()的默认部分将其初始化。

它将具有对象的默认属性。