unity3d C# set和get的属性

fzsnzjdm  于 2022-12-19  发布在  C#
关注(0)|答案(4)|浏览(249)

我把它打印到控制台上,它写着false

bool _turnedOn, _turnedOff;

public bool Start { get => _turnedOn; private set => _turnedOn = true; }

如果我将变量设置为true,为什么它返回false

e0bqpujr

e0bqpujr1#

bool _turnedOn, _turnedOff;

这两个都是假的,当你访问Start时,它会给予你_turnedOn,这是假的,它不会被设置为真,直到你试图设置Start为任何值,因为你已经定义了setter为_turnedOn = true
如果你把它声明为bool _turnedOn = true;,那么你会得到你想要的,我想,但是我不明白,为什么要为一个你想要永远为真的值费心呢?

sqserrrh

sqserrrh2#

“c#”中的布尔值默认为false。
由于Start没有初始化为“true”,因此默认为false。
使用私有setter时,需要在构造函数中设置它,如下所示

Class StartClass{
    
        StartClass()
       {
           Start = true;
       }
    
    }
bf1o4zei

bf1o4zei3#

在.NET(包括C#)中,布尔值默认设置为False。
bool类型的默认值为false。
https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/builtin-types/bool
此外,最佳做法是在创建变量时直接指定默认值,沿着将它们放在单独的行中。
我也不确定用例,但是使用一个bool可能比使用两个bool更好。

js4nwp54

js4nwp544#

通过查看成员名称,看起来并不像你不需要两个变量来表示off/on,因为你只需要表示两个值on或off,这可以通过使用一个bool变量来完成。
现在到你的问题.你只是设置_turnedOn变量.和默认值的boolfalse.所以_turnedOff将是false只.

相关问题