Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#:在不创建对象的情况下调用非静态成员函数_C# - Fatal编程技术网

C#:在不创建对象的情况下调用非静态成员函数

C#:在不创建对象的情况下调用非静态成员函数,c#,C#,在浏览代码库时,我遇到了一个类似于以下内容的语句: new Class().MemberFunction(); 这句话到底在做什么?是否在不创建此类对象的情况下调用成员函数 创建一个新类(因为“新建”) 启动您调用的MemberFunction() 这意味着,它不能满足你的实际需求 即使是static也已经创建了一次类。它正在创建一个类的新实例——正如您可以清楚地看到的新类()部分的代码一样——唯一不“常见”的是它不存储对该实例的引用,而只是使用它来调用成员函数() 这意味着想要执行Membe

在浏览代码库时,我遇到了一个类似于以下内容的语句:

new Class().MemberFunction();
这句话到底在做什么?是否在不创建此类对象的情况下调用成员函数

  • 创建一个新类(因为“新建”)

  • 启动您调用的MemberFunction()

  • 这意味着,它不能满足你的实际需求


    即使是static也已经创建了一次类。

    它正在创建一个
    类的新实例
    ——正如您可以清楚地看到的
    新类()
    部分的代码一样——唯一不“常见”的是它不存储对该实例的引用,而只是使用它来调用
    成员函数()


    这意味着想要执行
    MemberFunction()
    的人不需要保留对特定实例的引用(这反过来可能意味着
    MemberFunction()
    应该转换为静态方法,但没有足够的信息可以确定)。

    “即使是静态也已经创建了一次类。”什么调用静态成员可以保证类型初始化,但绝大多数情况下不会创建该类型的实例……这与
    Class myInstance=new Class()相同;myInstance.MemberFunction(),但它不使用变量。
    new
    创建对象/实例;在这两种情况下,[member]方法调用都是在计算结果为实例的表达式上调用的。这与
    amethodReturninganObjectOfClasshatBeenyWorReused().MemberFunction()
    “工作”的原因相同:该成员在相应的
    类的表达式上被调用