我知道,在這種情況下,我可以簡單地使用abs,但我只是好奇:爲什麼會發生這種情況?三個運算符導致StackOverflowException
public float maxThrotle{
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
我知道,在這種情況下,我可以簡單地使用abs,但我只是好奇:爲什麼會發生這種情況?三個運算符導致StackOverflowException
public float maxThrotle{
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
通過嘗試從屬性設置器中調用屬性設置器導致無限循環。
你可能想創建一個私有支持字段存儲的值,如下所示:
private float maxThrotle;
public float MaxThrotle {
set { maxThrotle = value < 0 ? -value : value; //this line causes problem
}
get { return maxThrotle; }
}
注意我把其更名爲使用大寫字母,按照大多數C#編碼標準。
(此外,詞節氣門拼寫與雙 - )。
啊,真是太尷尬了!無論如何,謝謝你的回覆。我的編程老師告訴我,在最新版本的C#中,你不需要實現額外的私有變量......但是他錯了,或者我誤解了他。 – user3387666
如果你在getter和setter中不需要特殊的邏輯,你可以直接寫'public float MaxThrottle {get;組; }'這相當於private float _#maxThrottle; public float MaxThrottle {get {return _#maxThrottle; } set {_#maxThrottle = value; }(編譯器生成一個帶有無效名稱的後綴字段'_#maxThrottle',所以除非通過屬性才能訪問它)。但是,如果實現自定義getter和setter,則還需要實現後臺字段。 – CompuChip
你的設置器分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性。其中運行您的setter,分配maxThrotle屬性... Kaboom! –
您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。其中運行您的getter讀取maxThrotle屬性。哪個.. Kaboom! –
你正在重複你自己的漢斯。變老? ;) –