C#:在不创建对象的情况下调用非静态成员函数
在浏览代码库时,我遇到了一个类似于以下内容的语句:C#:在不创建对象的情况下调用非静态成员函数,c#,C#,在浏览代码库时,我遇到了一个类似于以下内容的语句: new Class().MemberFunction(); 这句话到底在做什么?是否在不创建此类对象的情况下调用成员函数 创建一个新类(因为“新建”) 启动您调用的MemberFunction() 这意味着,它不能满足你的实际需求 即使是static也已经创建了一次类。它正在创建一个类的新实例——正如您可以清楚地看到的新类()部分的代码一样——唯一不“常见”的是它不存储对该实例的引用,而只是使用它来调用成员函数() 这意味着想要执行Membe
new Class().MemberFunction();
这句话到底在做什么?是否在不创建此类对象的情况下调用成员函数
即使是static也已经创建了一次类。它正在创建一个
类的新实例
——正如您可以清楚地看到的新类()
部分的代码一样——唯一不“常见”的是它不存储对该实例的引用,而只是使用它来调用成员函数()代码>
这意味着想要执行MemberFunction()
的人不需要保留对特定实例的引用(这反过来可能意味着MemberFunction()
应该转换为静态方法,但没有足够的信息可以确定)。“即使是静态也已经创建了一次类。”什么调用静态成员可以保证类型初始化,但绝大多数情况下不会创建该类型的实例……这与Class myInstance=new Class()相同;myInstance.MemberFunction()代码>,但它不使用变量。new
创建对象/实例;在这两种情况下,[member]方法调用都是在计算结果为实例的表达式上调用的。这与amethodReturninganObjectOfClasshatBeenyWorReused().MemberFunction()
“工作”的原因相同:该成员在相应的类的表达式上被调用