gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 17:44:44 26 4
gpt4 key购买 nike

我有这段代码:

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/

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