小编Eri*_*ric的帖子

C#StreamReader,"ReadLine"用于自定义分隔符

获得方法功能的最佳方法是什么StreamReader.ReadLine(),但使用自定义(字符串)分隔符?

我想做点什么:

String text;
while((text = myStreamReader.ReadUntil("my_delim")) != null)
{
   Console.WriteLine(text);
}
Run Code Online (Sandbox Code Playgroud)

我尝试我自己的使用,使Peek()StringBuilder,但它的效率太低.我正在寻找建议或可能是一个开源解决方案.

谢谢.

编辑

我之前应该澄清一下......我已经看到了这个答案,但是,我不想将整个文件读入内存.

c# file-io parsing streamreader delimiter

18
推荐指数
1
解决办法
1万
查看次数

从集合中查找和删除项目

从集合中删除集合的最佳方法是什么,但仍保留在单独集合中删除的项目?

我写了一个扩展方法来做到这一点,但我认为必须有一个更好的方法.这是我的功能:

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)

我不是百分之百确定在幕后的方法FindAllRemoveAll方法中发生了什么,但我想更好的方法是以某种方式将项目从一个列表"转移"到另一个列表.

c# linq

15
推荐指数
2
解决办法
5241
查看次数

什么时候应该使用XSD文件?

我在学习XSD文档的目的时遇到了麻烦,想要一个解释,或者想要一个合适的资源链接.我已经阅读了几个小时的各种网站,但没有找到解释"大局"的任何内容.

具体来说,我想知道:

  1. 你什么时候需要XSD?你为什么要用一个?
  2. XSD提供哪些优势?有哪些替代方案?

从我到目前为止的理解,您基本上描述了XML格式的类结构.但那时你用它做什么呢?它是在编译期间使用的吗?是否使用它可以更容易地将类实例保存在XML文档中?

当你可以使用代码文件时,我很难理解你为什么需要在XML文件中描述一个类.我的第一个想法是,不知何故XSD在运行时加载,并允许用户动态修改它,但这没有任何意义,因为如果添加一个对象,则无法在其余部分引用它代码.

此外,是否可以在XSD/XML文档中描述函数?

提前谢谢.

xml xsd

12
推荐指数
2
解决办法
1万
查看次数

在WPF中停靠/填充

这似乎是一个简单的问题,但我已经尝试了一个小时,似乎无法搞清楚.

我想要做的就是用Canvas填充MainWindow.我找不到允许这样做的任何属性,我想到的唯一方法是设置Canvas.Width/Height = MainWindow.Width/Height,但每次调整窗口大小时我都必须这样做.

在WinForms对接中,父容器中的元素很容易.

wpf dock autofill fill

10
推荐指数
1
解决办法
2万
查看次数

一种返回派生类实例的抽象方法

是否可以创建一个必须返回派生类实例的抽象方法?我可以做这个:

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# inheritance abstract-class

9
推荐指数
2
解决办法
6045
查看次数

首先检查数据库单元是否为空

我通过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是一种类型,在给定的上下文中无效".

c# oledb ms-access exception

7
推荐指数
1
解决办法
7183
查看次数

本地范围如何在C#中工作

可能重复:
子范围和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.

我可以理解有一个或另一个,但为什么这两个错误都存在?第一种选择有没有办法?我觉得很烦人.

谢谢.

c# scope variable-names

6
推荐指数
1
解决办法
622
查看次数

在类列表中查找类元素

我正在尝试使用"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查找类列表中元素的匹配项.

谢谢,如果我不清楚,请告诉我.

c# list find

5
推荐指数
1
解决办法
2万
查看次数

如何制作一个接受模块/加载项的"仪表板"实用程序

我希望这个问题有道理.基本上,我正在寻找一套指南,甚至是一个教程,它将展示如何创建一个可以轻松添加和删除"模块"或"加载项"的应用程序

例如,在Microsoft Office中,您通常会看到可以下载和安装的程序,它们只会在Microsoft Word中添加一个额外的选项卡(例如),它将实现一些新功能.

我有几个使用基本相同的数据源的应用程序,我想整合它们,并且还可以在未来添加更多功能,而不需要1.需要全新的安装和2.调整我的每一段代码.

我正在寻找一个可以开始的地方.

提前致谢.

**

编辑:详细说明......我特别想到的是一个应用程序,它访问存储在文本文件中的大量数据,并使用一些数据创建一些图表,也许还有一些表格.我希望能够使用相同的数据在将来添加不同的图表.因此,您可以单击Button_A并生成Graph_A,几周后,您可以单击Button_B并生成Graph_B.

如果我能想出一种只需要从文件中读取一次数据的方法,那将是非常好的,但我知道这将需要稍微调整我的DataReader类.

c# design-patterns module

5
推荐指数
1
解决办法
734
查看次数

MATLAB:将值映射到其他数组的索引

任何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)

arrays indexing matlab

5
推荐指数
1
解决办法
5975
查看次数