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;