什么是 C# 等价于 C++ ::(非静态)

What is the C# equavilent of C++ :: (non-static)

我使用 C++ 已经有一段时间了,几周前我开始学习 C#。在编写初始化程序时,我发现我不知道如何使用 :: 运算符。

在 C++ 中,它看起来像:

class something{
    bool a;
    void doSg();
}
void doSg(){
    something::a = true;
}
int main()
{
    something mySg;
    mySg.doSg();
}

因此,我尝试在 C# 中重新创建 void doSg() 函数:一种修改 class 对象数据的方法,它被调用。 在以下代码中:

class something
{
    bool a;
    public void func()
    {
        this.a = true;
    }
}
class source
{
    something mySg;
    mySg.func();
}

this.a = true 有效,还是我应该:

class something
{
    bool a;
    public myclass func(myclass item)
    {
        item.a = true;
        return item;
    }
}
class source
{
    something mySg;
    mySg = func(mySg);
}

或者有更好的解决方案吗?

var 这里是一个关键字,所以它可能不会像您正在使用的那样起作用。你可以这样做:

class something {
    bool myBool; 

    public void func()
    {
        this.myBool= true;
        myBool= true;  //or you can just leave this "this" off
    } 
}

当调用 something.func() 时,它会将 myBool 设置为 true。

"this" 只是指 class(或结构)本身,不需要经常使用。如果有像这样的重复名称,您只需要它...

class something {
    bool myBool; 

    public void func(bool myBool)
    {
        myBool= myBool; //would not do anything
        this.myBool= myBool;  //force class myBool
    } 
}

至于 return,您列出的第二个示例需要它,但需要更改或删除 var。

class something
{
public Myclass func(myclass item)
    {
        Myclass item = new myClass(); // first create a class
        return item; //since myclass in in the header, we need to return a myclass
    }
}

我将 myClass 更新为 MyClass,因为 classes 应该以大写字母开头,但这不是必需的。我希望这对一些人有所帮助。就所有细节而言,C# 与 C++ 不同。