Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# C语言中整数的生成集#_C#_Set - Fatal编程技术网

C# C语言中整数的生成集#

C# C语言中整数的生成集#,c#,set,C#,Set,在F#中,您可以生成一组数字,只需说出[1..100] 我想在C#中做类似的事情。这就是我到目前为止的想法: public static int[] To(this int start, int end) { var result = new List<int>(); for(int i = start; i <= end; i++) result.Add(i); return result.ToArray(); } 我仍然在寻找关于1

在F#中,您可以生成一组数字,只需说出[1..100]

我想在C#中做类似的事情。这就是我到目前为止的想法:

public static int[] To(this int start, int end)
{
    var result = new List<int>();
    for(int i = start; i <= end; i++)
        result.Add(i);
    return result.ToArray();
}

我仍然在寻找关于1.To(100)

可枚举范围(1100)可读性的想法

我认为像
Set(1100)
IntSequence(1100)
这样的东西比使用扩展方法更容易阅读


但是个人意见…

我喜欢使用
的想法。可选的
Enumerable.Range
在imo中有一个细微的缺陷。第二个参数是而不是最后一个元素的值,它是枚举的长度。这就是我过去所做的:

public IEnumerable<int> To(this int start, int stop)
{
  while (start <= stop)
    yield return start++;
}

你对自己问题的回答很好。如果你关心性能,就不要使用列表。构建一个列表并不断扩展它是愚蠢的。只需构造一个大小合适的数组。使用扩展方法

public static int[] To(this int num)
    {
        //do work
    }

我认为你太担心这种语言不能准确地表达你想要的特定句法

在我看来,扩展方法是一种很好的方法,但我想知道你是否真的用它来证明扩展方法的“惊喜”

在C#语言的领域中,通过方法名来说明您正在尝试做什么更合适。这感觉更像是Ruby而不是C。这感觉更像是它想要自己在课堂上,特别是如果你想添加带有跳过模式的范围(即,数字从1到10乘3)。我认为

public class RangedArray {
    public static int[] Generate(int from, into to, int by=1) { /* ... */ }
}

用C#来表达这一点是完全可以接受的。

这种方法很有用。谢谢它的可读性不如1.To(100),但我至少可以在To()的实现中使用它。。。这是因为我实际上需要一个数组,它变成:Enumerable.Range(1100).ToArray(),我想说1.To(100)可能会被误解。对我来说,这听起来像一个演员。此外,Enumerable.Range还有在.net框架中实现的优点,因此可能会为更多人所熟悉。这就是我所寻找的。我真的不想把Enumerable.Range(5,2).ToArray()写成新的[]{5,6,7}。我理解5.To(7)可能会让人困惑,但它比枚举行读起来更好。我在寻找比5更具可读性的建议。To(7)向int之类的东西添加扩展方法让我觉得有点恶心。我会避免使用“Set”,因为它的意思是wrt:properties,我更喜欢看到Sequence而不是IntSequenceYes,长度上的优点,而不是值的微妙之处。我需要它是一个数组,而不是一个IEnumerable,所以这里的收益率并没有给我带来任何好处。请看我在OPS中的编辑您可以这样做,但在生成集合时您确实牺牲了可读性…感谢您的评论。我重读了这篇文章,意识到我写的正是你写的。。。很抱歉。:-)这是扩展方法的巧妙运用。我同意。但是,您的默认参数是C#4。。。让一些人困惑的是,现在(预rtm)您是否有创建数组而不是IEnumerable的特定需求?如果是这样的话,我很好奇你提出这个要求的理由是什么。
public static int[] To(this int num)
    {
        //do work
    }
public class RangedArray {
    public static int[] Generate(int from, into to, int by=1) { /* ... */ }
}