gpt4 book ai didi

c# - 如何提供要在函数中使用的字段?

转载 作者:太空宇宙 更新时间:2023-11-03 21:51:28 27 4
gpt4 key购买 nike

Linq 的 OrderBy 之类的东西,您可以在其中指定应该用来进行排序的键。

具体来说,在我的例子中,我有一个具有两个 bool 属性的等效结构,一个 .IsNice 和另一个 .IsPretty;然后,我希望能够执行一个函数,返回一个实例是漂亮还是不错。

我可以做两个函数,

    bool itIsPretty (ExampleStruct toVerify);
bool itIsNice (ExampleStruct toVerify);

但是,两者本质上是一样的!两者无非都是返回Verify.(IsPretty/IsNice),不想有复制粘贴的功能。

另一种选择是进行以下操作:

    bool isItNiceOrPretty (ExampleStruct toVerify, bool checkForNiceness)
{
if (checkForNiceness) return toVerify.IsNice;
else return toVerify.IsPretty;
}

但是,如果不止这两种类型呢?好吧,我可以将这个 bool 参数变成一个整数或一个字符串,但是我需要保留一个包含所有键值及其各自字段的表......这有可能造成困惑和违反直觉我添加和/或删除了我什至不想再考虑的示例结构的字段。

那么,有没有办法按照我的想法,创造出这么灵活的功能呢?还是我必须坚持使用可怕的 Ctrl+C Ctrl+V?

最佳答案

你可以传入一个 Func<ExampleStruct,bool> :

bool DoSomething(ExampleStruct value, Func<ExampleStruct,bool> predicate)
{
if (predicate(value))
{
// Do your thing
}
}

然后您可以通过以下方式调用它:

bool result = DoSomething(toVerify, v => v.IsNice);

关于c# - 如何提供要在函数中使用的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329164/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com