如何解决C#无法从字符串属性获取char
我有一个类的属性,该类从字符串字段接收字符串值。我需要检查属性的字符串值是否具有与数组中一组字符串的前两个 char 值相同或不同的前两个 char 值。然后,如果没有匹配项,我需要替换属性接收到的字符串的前2个字符
因此,在我的情况下:我决定使用属性 BookID (来自类Book 的)从该属性接收的字符串中读取第一个字符,并进行比较它与数组 categoryCodes 中每个字符串的第一个字符一起使用。如果前一个字符都不匹配(,这是我被卡住的地方),我需要将属性 BookID 的字符串的前两个字符替换为'M ' 和我'。我收到一个老实说根本无法理解的错误,并花了数小时试图解决它,但我不知道。 救命! S.O.S
struct CustomListStyle: ListStyle {
static func _makeView<SelectionValue>(value: _GraphValue<_ListValue<CustomListStyle,SelectionValue>>,inputs: _ViewInputs) -> _ViewOutputs where SelectionValue : Hashable {
}
static func _makeViewList<SelectionValue>(value: _GraphValue<_ListValue<CustomListStyle,inputs: _ViewListInputs) -> _ViewListOutputs where SelectionValue : Hashable {
}
}
我在这里做错了什么? 是否可以仅通过属性本身访问属性内的字符串? 如何替换属性接收的字符串中的特定字符?
谢谢。
解决方法
string indexer是只读的,这意味着您无法通过其索引器设置字符
public char this[int index] { get; }
较长的故事
字符串是不可变(不可更改的对象)和 Interned 。
Interning 只是一种奇特的说法,它表示将字符串与每个不同字符串值的一个副本仅存储在表中以减少分配。很容易看出为什么 string 然后需要是不变的。能够设置或设置 indexer 会导致各种奇怪的问题。
您可能需要将BookID
转换为char
的{{1}} 数组,然后ToCharArray
转换回,或者使用{{3 }}或C#8 Range表示法,并通过其他方式重建Concat
从此实例检索一个子字符串。子字符串开始于 指定的字符位置,并继续到字符串的末尾。
string
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。