Tag: C#的

如果不存在,创build一个.txt文件,如果它附加了一个新行

我想创build一个.txt文件并写入它,如果该文件已经存在,我只想追加更多的行: string path = @"E:\AppServ\Example.txt"; if (!File.Exists(path)) { File.Create(path); TextWriter tw = new StreamWriter(path); tw.WriteLine("The very first line!"); tw.Close(); } else if (File.Exists(path)) { TextWriter tw = new StreamWriter(path); tw.WriteLine("The next line!"); tw.Close(); } 但第一行似乎总是被覆盖…我怎样才能避免写在同一行(我使用循环)? 我知道这是一个非常简单的事情,但我从来没有使用过WriteLine方法。 我对C#完全陌生。

如何用NUnittesting私有方法?

我想知道如何正确使用NUnit。 首先,我创build了一个单独的testing项目,使用我的主项目作为参考。 但在这种情况下,我无法testing私人方法。 我的猜测是,我需要包括我的testing代码到我的主代码?! – 这似乎不是正确的做法。 (我不喜欢用代码运输代码的想法。) 如何用NUnittesting私有方法?

你可以在代码中configurationlog4net而不是使用configuration文件?

我明白为什么log4net使用app.config文件来设置日志logging – 所以您可以轻松地更改logging信息的方式,而无需重新编译代码。 但在我的情况下,我不想用我的可执行文件打包一个app.config文件。 我不想修改我的日志logging设置。 有没有办法让我设置日志代码而不是使用app.config ? 这是我简单的configuration文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" /> </configSections> <log4net> <appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender"> <file value="Logs\EventLog.txt" /> <appendToFile value="false" /> <rollingStyle value="Size" /> <maxSizeRollBackups value="5" /> <maximumFileSize value="1GB" /> <layout type="log4net.Layout.PatternLayout"> <conversionPattern value="%date [%thread] %-5level %logger – %message%newline" /> </layout> </appender> <appender name="MemoryAppender" type="log4net.Appender.MemoryAppender"> </appender> […]

确定一个序列是否包含使用Linq的另一个序列的所有元素

给定两组值: var subset = new[] { 2, 4, 6, 8 }; var superset = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 我如何确定superset包含subset superset所有元素? 我已经想出了这个: superset.Intersect(subset).Count() == subset.Count() 这是最合乎逻辑和有效率的方法吗?

如何传递匿名types作为参数?

我如何将匿名types作为parameter passing给其他函数? 考虑这个例子: var query = from employee in employees select new { Name = employee.Name, Id = employee.Id }; LogEmployees(query); 这里的variablesquery没有强types。 我应该如何定义我的LogEmployees函数来接受它? public void LogEmployees (? list) { foreach (? item in list) { } } 换句话说,我应该用什么来代替? 分数。

DateTime.ToString(“MM / dd / yyyy HH:mm:ss.fff”)导致类似于“2013年9月14日07.20.31.371”

我有一个WP8应用程序,它将发送当前时间到一个Web服务。 我通过调用获取date时间string DateTime.ToString("MM/dd/yyyy HH:mm:ss.fff") 对于大多数用户来说,它的工作很好,并给我正确的string,如"09/10/2013 04:04:31.415" 。 但是对于某些用户来说,结果string就像"09/14/2013 07.20.31.371" ,这会导致我的Web服务出现问题。 是否因为一些文化格式问题? 我怎样才能确保结果string由冒号而不是点分隔?

如何自动调整DataGridView控件中的列的大小,并允许用户调整同一网格上的列?

我在Windows窗体(C#2.0不是WPF)上填充DataGridView控件。 我的目标是显示一个整齐地用单元格填充所有可用宽度的网格 – 即在右侧没有未使用的(深灰色)区域,并根据其包含的数据适当地调整每一列的大小,还允许用户调整任何列的大小根据他们的喜好。 我试图通过设置每个列的AutoSizeMode为DataGridViewAutoSizeColumnMode.AllCells,除了我设置为DataGridViewAutoSizeColumnMode.Fill的列之一,以确保网格的整个区域整齐地填充数据。 (我不介意当用户试图调整这个列的大小时,它会弹回到确保水平空间总是被使用的大小。) 但是,正如我所提到的,一旦加载,我希望允许用户调整列的大小以适应自己的需求 – 为每个列设置这些AutoSizeMode值,然后用户无法再调整这些列的大小。 我已经尝试不设置允许resize的所有列的AutoSizeMode,但不根据单元格包含的数据设置初始大小。 加载数据后,将网格的AutoSizeMode更改回“Not Set”时,会出现相同的结果。 有没有我在这里丢失的设置,允许自动设置默认列宽和用户resize,或者有其他技术,我必须填充DataGridView控件时使用?

可能通过foreach向后迭代?

我知道我可以使用一个for语句并达到相同的效果,但我可以通过在C#中的foreach循环向后循环?

删除string中特定字符后的字符,然后删除子string?

当这看起来很简单,而且string/字符/正则expression式有很多问题,但我找不到我所需要的(除了另一种语言: 在某个点之后删除所有文本 ),我觉得有点笨。 我有以下代码: [Test] public void stringManipulation() { String filename = "testpage.aspx"; String currentFullUrl = "http://localhost:2000/somefolder/myrep/test.aspx?q=qvalue"; String fullUrlWithoutQueryString = currentFullUrl.Replace("?.*", ""); String urlWithoutPageName = fullUrlWithoutQueryString.Remove(fullUrlWithoutQueryString.Length – filename.Length); String expected = "http://localhost:2000/somefolder/myrep/"; String actual = urlWithoutPageName; Assert.AreEqual(expected, actual); } 我在上面的问题尝试了解决scheme(希望语法将是相同的!),但不是。 我想首先删除可能是任何可变长度的queryString,然后删除页面名称,这可能是任何长度。 我怎样才能从完整的URL中删除查询string,这样的testing通过?

Linux的c + +错误:未定义引用'dlopen'

我使用C ++(Eclipse)在Linux下工作,并希望使用库。 Eclipse给我一个错误: undefined reference to 'dlopen' 你知道一个解决scheme吗? 这是我的代码: #include <stdlib.h> #include <stdio.h> #include <dlfcn.h> int main(int argc, char **argv) { void *handle; double (*desk)(char*); char *error; handle = dlopen ("/lib/CEDD_LIB.so.6", RTLD_LAZY); if (!handle) { fputs (dlerror(), stderr); exit(1); } desk= dlsym(handle, "Apply"); if ((error = dlerror()) != NULL) { fputs(error, stderr); exit(1); } dlclose(handle); […]