添加:用于索引到数组的C#表示法

Tha*_*nos 2 .net c#

我在大学时使用IDL和MatLab,现在我已经工作了几年,我想念:索引数组的符号.例如

arrray[1:5]  
Run Code Online (Sandbox Code Playgroud)

这将从1到5的元素返回一个数组.另一个例子是:

stringVar.Split(")".ToCharArray())[1:*]
Run Code Online (Sandbox Code Playgroud)

这将返回跳过第一个元素的字符串数组.

有没有人看过鞋角的方法:用C#表示?

我在一些解释语言和Perl或Python中看到它,不记得了.

我想知道这是否可以通过一些运算符覆盖来完成?

Jar*_*Par 5

目前尚未在BCL中实施.添加此功能的最佳方法是通过扩展方法.例如,这是一个快速而肮脏的例子(不完整的特色).

public static IEnumerable<T> GetRange<T>(this IEnumerable<T> enumerable, string range) {
  var arr = range.Split(':');
  var start = Int32.Parse(arr[0]);
  if ( arr[1] == "*" ) {
    return enmuerable.Skip(start);
  } else {
    var end = Int32.Parse(arr[1]);
    return enumerable.Skip(start).Take(end-start);
  }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以做到

strVar.GetRange("1:*");  // Skip first element take rest
strVar.GetRange("1:5");  // Skip first element next 5
Run Code Online (Sandbox Code Playgroud)

注意:我根本不熟悉Matlab语法,因此我不确定是否将其实现为正确的规范,但希望它能得到一般的想法.