Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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# - Fatal编程技术网

C# 一行代码挑战

C# 一行代码挑战,c#,C#,我正在尝试为以下代码编写一行代码: if (a.Count() == n) { return a; } else if (a.Count() > n) { Array.Resize(ref a, n); return a; } else { return a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray(); } 到目前为止,我已经尝试过: return a.Count() == n ? a :

我正在尝试为以下代码编写一行代码:

if (a.Count() == n)
{
    return a;
}
else if (a.Count() > n)
{
     Array.Resize(ref a, n);
     return a;
}
else
{
    return a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray();
}
到目前为止,我已经尝试过:

return a.Count() == n ? a :
 (a.Count() > n ? Array.Resize(ref a, n) : 
 a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray());
但正如您所看到的,它不会编译,我无法找到一种方法来用一行代码替换以下代码:

Array.Resize(ref a, n);
return a;

任何帮助都将不胜感激。谢谢。

使用
获取
方法而不是
数组如何。调整大小

return a.Count() == n ? a :
 (a.Count() > n ? a.Take(n).ToArray() : 
  a.Concat(Enumerable.Repeat(0, n - a.Count())).ToArray());


你到底为什么要把这个复杂的代码放在一行里?!提取一个具有该逻辑的方法,并使用它来代替。。。或者更好地将其放入扩展方法中。这可能是用于代码高尔夫@khlr我没有得到满分,因为它要求尽可能少写代码。这就是为什么我要写一行代码的原因。给你记下来似乎有点奇怪。当然,你需要写得尽可能枯燥,但我会向你的导师/讲师/教授或其他人争辩,让代码模块化和可重用更重要。@Syed这是管理目标吗?您(或您的组织)只会获得一件事:不可读的代码和可维护性噩梦…:-/这就是我想要的,真的很棒。谢谢:D@SyedFarjadZiaZaidi添加了第二个变体。谢谢,这很好,但PetSerAl发布了一个比我最初尝试实现的更好的一行。感谢您的帮助:)更简单的方法是
return(a.Count()
return a.Concat(Enumerable.Repeat(0,n)).Take(n).ToArray();
Array.Resize(ref a, n); return a;