曲解.在c#中是否存在本机使用lambdas引用的方法
本文关键字:lambdas 引用 方法 本机 是否 存在 曲解 | 更新日期: 2023-09-27 17:50:54
我的函数中有一些通过ref
关键字给出的变量。我想在lambda表达式中使用ref变量,而不使用局部变量。
我知道c#不能在工作中合并lambdas和ref变量。但不存在任何变态,使ref-变量工作在lambda表达式?
伪代码(拟c#):T MyFunction<T>(ref T x, ref T y)
{
return (Func<T>) ( () => ( (100 * (x - y)) / x ) ();
}
I want it:
1)。是通用的。
2)。通过引用接受泛型类型作为参数。
3)。
4)。使用泛型返回结果
5)。是一个有机编程代码:)笑话。
打电话给史密斯。像这样:
int x = 21, y = 9;
int result = MyFunction<int>(ref x, ref y);
和其他类型的…
double x = 21.5, y = 9.3;
double result = MyFunction<double>(ref x, ref y);
遗憾的是,c#不能给我这样的结构和愿望,所以我打算看看Lisp/Haskell(可能是f#)。
(PS) =>("所以我想有一个硬性与c#的可能性,正如你所看到的。")
我发布了一个简单的不安全的方法,但是你可以对泛型说再见。使用这些代码是不好的实践,但我想它在某种程度上回答了这个问题。
static unsafe int MyFunction(ref int value)
{
fixed (int* temp = &value)
{
var pointer = temp;
return new Func<int>(() => *pointer += 10)();
}
}
使用:
var value = 42;
var returnedValue = MyFunction(ref value);
var success = value == returnedValue;
//success will be true
我再重复一遍,我不建议你在任何情况下使用它,如果你需要一种专门为这些事情设计的语言,有很多。