获得方法功能的最佳方法是什么StreamReader.ReadLine(),但使用自定义(字符串)分隔符?
我想做点什么:
String text;
while((text = myStreamReader.ReadUntil("my_delim")) != null)
{
Console.WriteLine(text);
}
Run Code Online (Sandbox Code Playgroud)
我尝试我自己的使用,使Peek()和StringBuilder,但它的效率太低.我正在寻找建议或可能是一个开源解决方案.
谢谢.
编辑
我之前应该澄清一下......我已经看到了这个答案,但是,我不想将整个文件读入内存.
从集合中删除集合的最佳方法是什么,但仍保留在单独集合中删除的项目?
我写了一个扩展方法来做到这一点,但我认为必须有一个更好的方法.这是我的功能:
public static List<T> FindAndRemove<T>(this List<T> lst, Predicate<T> match)
{
List<T> ret = lst.FindAll(match);
lst.RemoveAll(match);
return ret;
}
Run Code Online (Sandbox Code Playgroud)
你会像这样使用它:
List<String> myList = new List<String>();
myList.Add("ABC");
myList.Add("DEF");
myList.Add("ABC");
List<String> removed = myList.FindAndRemove(x => x == "ABC");
// myList now contains 1 item (DEF)
// removed now contains 2 items (ABC, ABC)
Run Code Online (Sandbox Code Playgroud)
我不是百分之百确定在幕后的方法FindAll和RemoveAll方法中发生了什么,但我想更好的方法是以某种方式将项目从一个列表"转移"到另一个列表.
我在学习XSD文档的目的时遇到了麻烦,想要一个解释,或者想要一个合适的资源链接.我已经阅读了几个小时的各种网站,但没有找到解释"大局"的任何内容.
具体来说,我想知道:
从我到目前为止的理解,您基本上描述了XML格式的类结构.但那时你用它做什么呢?它是在编译期间使用的吗?是否使用它可以更容易地将类实例保存在XML文档中?
当你可以使用代码文件时,我很难理解你为什么需要在XML文件中描述一个类.我的第一个想法是,不知何故XSD在运行时加载,并允许用户动态修改它,但这没有任何意义,因为如果添加一个对象,则无法在其余部分引用它代码.
此外,是否可以在XSD/XML文档中描述函数?
提前谢谢.
这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法搞清楚.
我想要做的就是用Canvas填充MainWindow.我找不到允许这样做的任何属性,我想到的唯一方法是设置Canvas.Width/Height = MainWindow.Width/Height,但每次调整窗口大小时我都必须这样做.
在WinForms对接中,父容器中的元素很容易.
是否可以创建一个必须返回派生类实例的抽象方法?我可以做这个:
abstract class Base
{
public abstract Base GetObj();
}
class Derived : Base
{
public Derived() { }
public override Base GetObj()
{
return new Derived();
}
}
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有办法这样做,这Derived::GetObj()是被迫返回一个Derived?
谢谢.
我通过C#访问MS Access 2007数据库,每当我尝试读取空单元格时,我都会收到异常.
具体来说,我正在尝试读取可能会或可能不会为空的"日期/时间"单元格.我正在使用OLE DB,并填充了一个DataSet.这些条件都不起作用:
DataSet dataSet = GetDataSet();
DataRow row = dataSet.Tables[0].Rows[0];
DateTime time = new DateTime();
time = (DateTime)row[5]; // Exception thrown
Run Code Online (Sandbox Code Playgroud)
如何在尝试分配单元格之前检查单元格是否为空?这些都不起作用:
if(row[5] == null) ;
if(row[5] == DBNull) ;
if(row[5] == (String)"") ;
Run Code Online (Sandbox Code Playgroud)
编辑:我应该提到:当我调试时,它说行[5]等于"System.DBNull",但是当我尝试"if(row [5] == DBNULL)"时出现错误.错误说"DBNULL是一种类型,在给定的上下文中无效".
可能重复:
子范围和CS0136
C#变量范围
虽然我已经使用C#很长一段时间了,但我偶然发现了这个错误.
如果我有以下内容:
if(true)
{
int x = 0;
}
int x = 0;
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息: A local variable named 'x' cannot be declared in this scope because it would give a different meaning to 'x', which is already used in a child scope to denote something else.
如果我这样做:
if(true)
{
int x = 0;
}
x = 0;
Run Code Online (Sandbox Code Playgroud)
我收到一条错误消息: The name 'x' does not exist in the current context.
我可以理解有一个或另一个,但为什么这两个错误都存在?第一种选择有没有办法?我觉得很烦人.
谢谢.
我正在尝试使用"List.Find"方法来查找与我的类中的元素匹配.这是一个例子......
class MyClass
{
String item1;
String item2;
}
List<MyClass> myClassList = new List<MyClass>();
// I am trying to find all instances of "MyClass" in the list "myClassList"
// where the element "item1" is equal to "abc"
// myClassList.Find(item => .item1 == "abc"); ?????
Run Code Online (Sandbox Code Playgroud)
无论如何,我希望这解释得更好一点.我对最后一部分感到困惑,所以我的问题是:如何使用List.Find查找类列表中元素的匹配项.
谢谢,如果我不清楚,请告诉我.
我希望这个问题有道理.基本上,我正在寻找一套指南,甚至是一个教程,它将展示如何创建一个可以轻松添加和删除"模块"或"加载项"的应用程序
例如,在Microsoft Office中,您通常会看到可以下载和安装的程序,它们只会在Microsoft Word中添加一个额外的选项卡(例如),它将实现一些新功能.
我有几个使用基本相同的数据源的应用程序,我想整合它们,并且还可以在未来添加更多功能,而不需要1.需要全新的安装和2.调整我的每一段代码.
我正在寻找一个可以开始的地方.
提前致谢.
**
编辑:详细说明......我特别想到的是一个应用程序,它访问存储在文本文件中的大量数据,并使用一些数据创建一些图表,也许还有一些表格.我希望能够使用相同的数据在将来添加不同的图表.因此,您可以单击Button_A并生成Graph_A,几周后,您可以单击Button_B并生成Graph_B.
如果我能想出一种只需要从文件中读取一次数据的方法,那将是非常好的,但我知道这将需要稍微调整我的DataReader类.
任何MATLAB专家都可以帮助解决这个问题:
我有以下两个数组:
A = [1 1 3 4 4 4 4 4];
B = [6 7 8 9];
Run Code Online (Sandbox Code Playgroud)
我想制作一个第三个数组,它使用"A"的值作为B中数组的指针.所以,最终结果将是:
C = [6 6 8 9 9 9 9 9];
Run Code Online (Sandbox Code Playgroud)
"A"的每个元素都映射到"B"中的索引.
提前致谢.
编辑:对不起,忘了提一下:我正在寻找一个非循环解决方案.这会起作用(我认为),但它使用循环:
C = [];
for i = 1:length(A)
C = [C B(A(i))];
end
Run Code Online (Sandbox Code Playgroud)