gpt4 book ai didi

c# - 返回字段值的结构,其语法与用于(比如)Int 的语法相同

转载 作者:行者123 更新时间:2023-11-30 14:02:01 25 4
gpt4 key购买 nike

很可能我只是感到困惑,如果我知道的话就不想这样做了,但这里是:

当您有 int myInt = 5; 时,您可以通过调用变量名称访问该 int 的值:int myOtherInt = myInt + 1;myInt++;.

我有一个结构,我想以这种方式运行,并返回一个现有的值类型。

简而言之,该结构有一个 Func 字段,并提供该函数的结果;它还有最小/最大字段,您可以使用它来限制输出,而不管函数的原始结果如何。

Func<Foo, int> _func;
int _min;
int _max;

public MyStruct(Func<Foo, int> func, int min, int max) {...}

// Doesn't work
public int this
{
get { return Clamp(_min, _max, _func()); }
}

Clamp(min, max, val) {}

所以,我希望能够写:

var myStruct = new MyStruct((myFoo => myFoo.IntVal * 5), 1, 1000);
int myInt = myStruct + 5;

最佳答案

这里有两种选择。您可以定义一个 implicit casting operator ,或者您可以定义每个 arithmetic operators你感兴趣。

这是使用隐式转换运算符的完整示例。无需实现 属性。

using System;

public struct MyStruct
{
public static implicit operator int(MyStruct myStruct)
{
return 2;
}
}

public class Test
{
public static void Main(string[] args)
{
var myStruct = new MyStruct();
var myInt = myStruct + 5;
Console.WriteLine("Int value: {0}", myInt);
}
}

在这种情况下,myStruct + 5 使用您已实现的重载运算符将您的结构隐式转换为整数。

关于c# - 返回字段值的结构,其语法与用于(比如)Int 的语法相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7138755/

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