将条件运算符(?:)与C ++构建器中的属性结合使用会显示一种非常奇怪的行为。
当使用属性值分配UnicodeString值时,它仍然是" NULL":
bigint
请参阅以下示例:
部首:
UnicodeString s2 = MyPropertyValue.IsEmpty() ? UnicodeString( "emptyValue" ) : MyPropertyValue;
Cpp文件:
class TForm1 : public TForm
{
__published:
TButton *Button1;
void __fastcall Button1Click(TObject *Sender);
private:
UnicodeString FMyPropertyValue;
void SetMyPropertyValue( UnicodeString AValue ) {
FMyPropertyValue = AValue;
}
UnicodeString GetMyPropertyValue( void ) {
return FMyPropertyValue;
}
public:
__fastcall TForm1(TComponent* Owner);
__property UnicodeString MyPropertyValue = { read=GetMyPropertyValue, write=SetMyPropertyValue };
};
当s1,s3和s4为" someValue"时,s2仍为" NULL"。
为什么?