private IEnumerable<string> Tables
{
get
{
yield return "Foo";
yield return "Bar";
}
}
Run Code Online (Sandbox Code Playgroud)
假设我想迭代那些并写一些像#m的#n处理.
有没有一种方法可以在我的主迭代之前找到m的值而不进行迭代?
我希望我清楚自己.
通常的构造函数ArrayList
是:
ArrayList<?> list = new ArrayList<>();
Run Code Online (Sandbox Code Playgroud)
但是还有一个重载的构造函数,其初始容量有一个参数:
ArrayList<?> list = new ArrayList<>(20);
Run Code Online (Sandbox Code Playgroud)
ArrayList
当我们可以随意添加时,为什么创建具有初始容量的产品很有用?
我的目录包含*.wav格式的近14,000,000个音频样本.
所有普通存储,没有子目录.
我想循环遍历文件,但是当我DirectoryInfo.GetFiles()
在该文件夹上使用时,整个应用程序冻结了几分钟!
这可以换一种方式吗?也许阅读1000,处理它们,然后采取下一个1000,依此类推?
与我合作的很多开发人员感觉更舒服List
,而不是IEnumerable
(例如).我想知道是否对ToList()
过度使用有任何性能影响.例如,或者,将ToList()
在订购后使用再次获取列表,即
private void ListThinger(List<T> input)
{
input = input.OrderBy(s => s.Thing).ToList();
foreach(var thing in input)
{
// do things
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
ToList()
方法效率如何?假设内容是POCO,它会创建一个新列表以及需要多少内存吗?如果它是值类型而不是POCO,这会改变吗?ToList()
?IEnumerable
然后ToList()
被调用,它是否会返回原始对象?Ps我明白单独使用ToList不会破坏任何支持,但是我们正在构建一个高度并发的系统,这个系统目前受CPU限制,因此我正在寻找一些小胜利,当缩放时,它将会带来很大的改进
我遇到了一个逐行读取文件的实现,如下所示:
using (StreamReader reader = File.OpenText(path))
while (!reader.EndOfStream)
{
string line = reader.ReadLine();
}
Run Code Online (Sandbox Code Playgroud)
但就我个人而言,我会这样做:
foreach (string line in File.ReadLines(path))
{
}
Run Code Online (Sandbox Code Playgroud)
有什么理由选择其中之一吗?
我正在尝试从拆分字符串中删除元素/项/条目.
假设我得到了string
[ string_ ]如下:
string string_ = "one;two;three;four;five;six";
Run Code Online (Sandbox Code Playgroud)
然后我拆分这个字符串来得到每一个,比方说,项目:
string[] item = (string_.Split(";"));
Run Code Online (Sandbox Code Playgroud)
除变量外我没有其他信息.根据用户的选择,我可以获得项目值和索引.
假设对于这个例子,用户选择" 4 ",即索引" 3 ".
如何使我的字符串看起来像索引3已被删除,因为string_
它将等于以下内容:
"一;二;三;五;六"
我尝试了多种方法,似乎唯一的解决方案是通过char方法.
是真的还是我错过了什么?
编辑建议已经_posted_answer:根据用户选择,我的ITEM可以放在我的分割字符串中的任何位置,这个问题不完全相同.
我正在ComboBox
动态创建一个数组,而DataSource
for all ComboBox
是一个包含一些整数的整数列表.但是当我在任何一个组合框中更改值X时,所有其他组合值都会重置为值X.
我开始从事一个项目,我注意到 ToList() 被多次调用,我认为它并不是真正必要和多余的。
第一个 ToList() 位于数据层,在此调用转到数据库并获取数据。
public IEnumerable<Company> GetCompanies()
{
return DbContext.Companies.ToList();
}
Run Code Online (Sandbox Code Playgroud)
然后在控制器我可以看到另一个调用为 ToList()
public ActionResult Index()
{
var companies = _companyService.GetCompanies().ToList();
return View(companies);
}
Run Code Online (Sandbox Code Playgroud)
我相信在控制器中调用 ToList() 是多余的。但我只是想知道它是否对性能有任何影响,或者语言本身自动识别结果实际上已经是列表并忽略第二个调用?
更新
另一个问题询问调用 ToList() 是否有影响。但是,我想知道对同一对象列表多次调用 ToList() 是否会产生影响。正如有人提到的那样,应该“希望忽略”。
怎么可能当我在SortedList上使用.net BinarySearch时,它需要的时间比我在同一个列表上使用我自己的二进制搜索方法要长得多?
使用.net binarysearch:
int ipos = MyList.Keys.ToList().BinarySearch(unSearchFor);
if (ipos >= 0)
{
// exact target found at position "ipos"
return MyList[unSearchFor];
}
else
{
// Exact key not found:
// BinarySearch returns negative when the exact target is not found,
// which is the bitwise complement of the next index in the list larger than the target.
ipos = ~ipos;
try
{
return MyList.Values[ipos - 1];
}
catch
{
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
我的二元搜索方法:
int nStart = 0;
int …
Run Code Online (Sandbox Code Playgroud)