Tôi đang sử dụng câu lệnh sau trong Java:C# tương đương với Arrays.fill Java() phương pháp
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Xin gợi ý cho C# tương đương.
Tôi đang sử dụng câu lệnh sau trong Java:C# tương đương với Arrays.fill Java() phương pháp
Arrays.fill(mynewArray, oldArray.Length, size, -1);
Xin gợi ý cho C# tương đương.
Tôi không biết bất cứ điều gì trong khuôn khổ mà làm điều đó, nhưng nó đủ dễ thực hiện:
// Note: start is inclusive, end is exclusive (as is conventional
// in computer science)
public static void Fill<T>(T[] array, int start, int end, T value)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (start < 0 || start >= end)
{
throw new ArgumentOutOfRangeException("fromIndex");
}
if (end >= array.Length)
{
throw new ArgumentOutOfRangeException("toIndex");
}
for (int i = start; i < end; i++)
{
array[i] = value;
}
}
Hoặc nếu bạn muốn chỉ định số thay vì bắt đầu/kết thúc:
public static void Fill<T>(T[] array, int start, int count, T value)
{
if (array == null)
{
throw new ArgumentNullException("array");
}
if (count < 0)
{
throw new ArgumentOutOfRangeException("count");
}
if (start + count >= array.Length)
{
throw new ArgumentOutOfRangeException("count");
}
for (var i = start; i < start + count; i++)
{
array[i] = value;
}
}
Điều đó không làm điều tương tự như 'fill'. –
nhưng nó không phải là mảng đích để sao chép ... nó đang lấy chiều dài..mynewArray là int [] – usr021986
Đề xuất của Rasel là ok. Ví dụ làm việc: int [] arr = new int [1000]; Array.Copy (arr.Select (i => 5) .ToArray(), arr, arr.Length); – dmitry
Nó có vẻ như bạn muốn làm một cái gì đó như thế này
int[] bar = new int[] { 1, 2, 3, 4, 5 };
int newSize = 10;
int[] foo = Enumerable.Range(0, newSize).Select(i => i < bar.Length ? bar[i] : -1).ToArray();
Tạo một mảng lớn mới với các giá trị cũ và điền vào thêm.
Đối với một điền đơn giản thử
int[] foo = Enumerable.Range(0, 10).Select(i => -1).ToArray();
hoặc một dải tiểu
int[] foo = new int[10];
Enumerable.Range(5, 9).Select(i => foo[i] = -1);
Tôi hy vọng chỉnh sửa của tôi là hợp lý .. hoặc nếu không thì tên biến thành 'uptoIndex' – nawfal
@nawfal: Không, nó được cố ý (mặc dù không nhất quán) độc quyền. Tôi đã dọn dẹp nó và thêm một giải pháp thay thế. –
Jon, tại sao bạn kiểm tra các trường hợp đặc biệt và ném mình khi clr sẽ làm điều đó? Tôi hơi bối rối bởi kiểu thiết kế này. Sẽ không chỉ kiểm tra điều kiện thứ hai (trong cả hai ví dụ của bạn) một mình đủ? – nawfal