You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中创建可通过字符串赋值的布尔类型属性?

问题

是否可以在C#中创建一个本质为bool类型,但可通过string类型赋值的属性?想要实现的效果如下:

string stringValue = "true";
object.BoolValue = stringValue ;
bool boolValue = object.BoolValue;

原本想使用get; set;实现,但转换时始终出错。可以在对象构造函数中转换该string,但如果后续需要修改该属性呢?是否需要单独的转换方法(转换逻辑并非仅识别"true"/"false",而是需要匹配预设的真值列表和假值列表,不匹配则抛出参数异常)?


提问者尝试的代码

private bool _readOnly;

public bool ReadOnly {
    get => _readOnly;
    set => _readOnly = Convert.ToBoolean(value);
}

public DeviceProperty(string readOnly) {
    ReadOnly = readOnly;
}

解决方案1:单独设置方法

下面是一个可行的实现方式,通过单独的设置方法处理字符串到bool的转换,同时保留直接读取bool值的便利性:

string stringValue = "true";
object.SetBoolValue(stringValue);
bool boolValue = object.BoolValue;

// 类内实现
public bool BoolValue { get; private set; }

public bool SetBoolValue(string stringValue)
{
    string[] trueValues = { /* 预设真值列表 */ };
    string[] falseValues = { /* 预设假值列表 */ };

    if (trueValues.Contains(stringValue))
    {
        BoolValue = true;
        return true;
    }
    if (falseValues.Contains(stringValue))
    {
        BoolValue = false;
        return true;
    }
    // 也可在此处抛出参数异常,根据需求调整
    return false;
}

核心需求是能轻松对bool值进行逻辑运算,因此采用单独的Set方法而非重载Get逻辑,既满足赋值时的字符串转换需求,又保证读取时直接操作原生bool类型。


解决方案2:存储原始字符串,动态判断布尔值

后续发现,若真值和假值列表会频繁且意外地变化(比如原本的假值可能变为真值),那么存储bool类型的方案并不合适。此时改为存储原始字符串值,通过GetBool()方法根据当前的真值/假值列表动态判断布尔值,确保每次判断都基于最新的规则。


内容的提问来源于stack exchange,提问作者Jan Daliba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 18:07:14