c# - 如何 "edit"函数中的外部对象

标签 c# function

我有这段代码:

CreaPager(m_oPacchettiEnum, 1, 10);

private void CreaPager(IEnumerable enPass, int limiteUp, int limiteDown)
{
    enPass= enPass.Skip(limiteDown).Take(limiteUp);
}

我想,当我编辑 enPass , 将编辑反射(reflect)到 m_oPacchettiEnum , 没有返回 IEnumerable<T>功能。

所以,直接编辑m_oPacchettiEnum trought函数。我以前在 C 上这样做,不知道在 C# 上是否可行(但我认为是这样)。

我读了一些关于使用 out 的内容,但似乎不起作用:

CreaPager(out m_oPacchettiEnum, 1, 10);

private void CreaPager(out IEnumerable enPass, int limiteUp, int limiteDown)
{
    enPass= enPass.Skip(limiteDown).Take(limiteUp);
}

最佳答案

out在这里不起作用,因为你不能使用 out方法中的参数,直到它被分配。由于您的作业使用 enum (你应该重命名)作为右侧的一部分,这是不允许的。切换outref将使事情顺利进行。

但是。正如我在回答您之前(现已删除)的问题时提到的,请不要这样做。当使用序列返回一个新的 IEnumerable<T> 时,它地道。 :

var newQuery = CreaPager(m_oPacchettiEnum, 1, 10);

private void CreaPager<T>(IEnumerable<T> enumeration, int limiteUp, int limiteDown)
{
    return enumeration.Skip(limiteDown).Take(limiteUp);
}

同样,您可以将方法设为 extension method通过在第一个参数前加上 this :

private void CreaPager<T>(this IEnumerable<T> enumeration, int limiteUp, int limiteDown) { .. }

这样做可以让您将您的方法集成到 LINQ-to-Objects 调用链中:

var query = myEnumerable.Where(x => x.OtherProp == 1).CreaPager(1, 10).Select(x => x.SomeProp);

编辑:因为您还需要返回 string ,使那个成为out参数:

private void CreaPager<T>(this IEnumerable<T> enumeration, int limiteUp, int limiteDown, out string myString)
{
    myString = "foo";
    return enumeration.Skip(limiteDown).Take(limiteUp);
}

您可以这样调用该方法:

string theString;
var newQuery = CreaPager(m_oPacchettiEnum, 1, 10, out theString);

out在这里很好,因为我假设您不需要同时使用和分配字符串。如果你这样做,那么我建议你无论如何将它分成两个参数。

关于c# - 如何 "edit"函数中的外部对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997775/

相关文章:

c++ - Hook 内部函数 : How do the the parameters look like?

function - 如何在 MATLAB 中得到 (-8)^0.333333 = -2?

c# - 迭代器 block 在 IL 中生成 try-fault

javascript - 尽管已绑定(bind),但在 onClick 处未定义 React 函数?

c# - 协商了哪个 TLS 版本?

c# - xslt参数条件检查

javascript - 什么时候应该在 JavaScript 中使用构造函数?

php - wp_mail() 函数发送单个邮件花费的时间太长

c# - C# Azure Functions 中的 Task.Run

c# - 单元测试Unity配置文件 "The type name or alias xxxx could not be resolved"