具有相同成员但不同名称的c#结构体,如何解决

本文关键字:结构体 何解决 解决 成员 | 更新日期: 2023-09-27 18:08:03

我遇到了一个问题,我有两个结构体具有完全相同的成员,但名称不同(明显违反DRY)。这背后的原因是结构体A是函数的输入,而结构体B是函数的输出。结构体AB的成员是相同的,但它们代表不同的东西。我怎么解决这个问题呢?

在我的头上,我想到有一个父基类,然后有AB继承它,但留下它是空的。


更具体地说,我正在开发一个简单的搜索和替换工具。第一个函数创建一个SearchResult列表,每个SearchResult包含startingIndextext(已搜索的文本可能不同(考虑正则表达式))。一旦创建了这些SearchResult,我就可以将它们传递给替换函数,该函数遍历SearchResult列表,然后替换它们。输出是一个ReplaceResult s的列表-在这个结构体中,它也有startingIndextext(但文本是"被替换后的文本")。

我正在学习c#,想到了这个简单的项目来尝试。

具有相同成员但不同名称的c#结构体,如何解决

几个选项

  1. 而不是有SearchResultReplaceResult结构体,为什么不有一个单一的结构体,也许称为IndexedTextItem,你使用两者?

  2. 您可以实现IIndexedTextItem接口,并将SearchResultReplaceResult更改为实现它的类

  3. 为什么不把它们分开呢?毕竟它们是不同的东西。拥有两个具有相似数据类型但服务于不同目的的结构不一定违反DRY。您可能希望将来扩展其中一个或另一个,例如,您可能需要在ReplaceResult结构中添加OriginalText元素,以支持以后的"撤销"功能。