小编Son*_*nül的帖子

如果字符串在.NET中是不可变的,那么为什么Substring需要O(n)时间?

鉴于字符串在.NET中是不可变的,我想知道为什么它们被设计为string.Substring()需要O(substring.Length)时间,而不是O(1)

即,有什么权衡,如果有的话?

.net c# string substring time-complexity

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

在C#中与FindTimeZoneById()一起使用的时区ID列表?

有人可以指出我所期望的id所引用的所有时区的完整列表TimeZoneInfo.FindTimeZoneById()吗?我无法在任何地方找到列表,我查看了.NET文档.

c# timezone list

218
推荐指数
8
解决办法
24万
查看次数

LINQ查询返回Dictionary <string,string>

我有一个MyClass的集合,我想用LINQ来查询获取不同的值,然后得到一个Dictionary <string,string>作为结果,但我无法弄清楚我怎么能比我更简单我在下面做.一些更干净的代码可以用来获取Dictionary <string,string>作为我的结果?

var desiredResults = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);

var queryResults = (from MyClass mc in myClassCollection
                    orderby bp.SomePropToSortOn
                    select new KeyValuePair<string, string>(mc.KeyProp, mc.ValueProp)).Distinct();

foreach (var item in queryResults)
{
    desiredResults.Add(item.Key.ToString(), item.Value.ToString());
}
Run Code Online (Sandbox Code Playgroud)

.net c# linq dictionary

213
推荐指数
2
解决办法
16万
查看次数

什么是数据传输对象?

什么是数据传输对象?

在MVC中是模型类DTO,如果没有,有什么不同,我们是否需要两者?

architecture model-view-controller data-transfer data-transfer-objects dto

186
推荐指数
9
解决办法
14万
查看次数

从2012年到2013年更新后无法加载文件或程序集'System.Web.Http 4.0.0

我按照升级进行了升级. http://www.asp.net/mvc/tutorials/mvc-5/how-to-upgrade-an-aspnet-mvc-4-and-web-api-project-to-aspnet-mvc-5-and- Web的API-2

我收到了错误.有没有其他人得到这个错误?

'/'应用程序中的服务器错误.

无法加载文件或程序集'System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(来自HRESULT的异常:0x80131040)
描述:在执行当前Web请求期间发生了未处理的异常.请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息.

异常详细信息:System.IO.FileLoadException:无法加载文件或程序集"System.Web.Http,版本= 4.0.0.0,文化=中性公钥= 31bf3856ad364e35"或它的一个依赖.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)

来源错误:

第48行:第49行:第50行:}第51行:第52行:protected void Application_BeginRequest(object sender,EventArgs e)

源文件:d:\ SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\Global.asax.cs行:50

程序集加载跟踪:下列信息有助于确定程序集"System.Web.Http,版本= 4.0.0.0,文化=中性公钥= 31bf3856ad364e35"无法加载.

===预绑定状态信息===日志:DisplayName = System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35(完全指定)LOG:Appbase = file:/// D: /SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/日志:初始PrivatePath = D:\ SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\bin调用程序集:ThirdPartyWebAPI,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null.===日志:此绑定在默认加载上下文中启动.日志:使用应用程序配置文件:D:\ SM\7.4Test\WebAPIServerV2\ThirdPartyWebAPI\web.config日志:使用主机配置文件:C:\ Users\michalc\Documents\IISExpress\config\aspnet.config日志:使用机器配置来自C:\ Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config的文件.日志:后策略引用:System.Web.Http,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/9184b2ea/c6d4b139/System.Web.Http.DLL.日志:尝试下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http .DLL.日志:尝试下载新的URL文件:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL.警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集的设置(hr = 0x80131040).探测终止.试图下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http.DLL .日志:尝试下载新的URL文件:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL.警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集的设置(hr = 0x80131040).探测终止.试图下载新的URL文件:/// C:/Windows/Microsoft.NET/Framework/v4.0.30319/Temporary ASP.NET Files/root/9184b2ea/c6d4b139/System.Web.Http/System.Web.Http.DLL .日志:尝试下载新的URL文件:/// D:/SM/7.4Test/WebAPIServerV2/ThirdPartyWebAPI/bin/System.Web.Http.DLL.警告:比较程序集名称导致不匹配:主要版本错误:无法完成程序集的设置(hr …

c# odata asp.net-web-api visual-studio-2013

179
推荐指数
6
解决办法
35万
查看次数

C#清理文件名

我最近一直在将各种位置的MP3转移到存储库中.我一直使用ID3标签构建新的文件名(谢谢,TagLib-Sharp!),我注意到我得到了一个System.NotSupportedException:

"不支持给定路径的格式."

这是通过产生任一File.Copy()Directory.CreateDirectory().

没过多久就意识到我的文件名需要消毒.所以我做了一件显而易见的事:

public static string SanitizePath_(string path, char replaceChar)
{
    string dir = Path.GetDirectoryName(path);
    foreach (char c in Path.GetInvalidPathChars())
        dir = dir.Replace(c, replaceChar);

    string name = Path.GetFileName(path);
    foreach (char c in Path.GetInvalidFileNameChars())
        name = name.Replace(c, replaceChar);

    return dir + name;
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,我继续得到例外.原来,':'不在集合中Path.GetInvalidPathChars(),因为它在路径根中有效.我认为这是有道理的 - 但这必须是一个非常普遍的问题.有没有人有一些消毒路径的短代码?最彻底的我已经想到了这一点,但感觉它可能是矫枉过正.

    // replaces invalid characters with replaceChar
    public static string SanitizePath(string path, char replaceChar)
    {
        // construct a list of characters that can't show up in filenames. …
Run Code Online (Sandbox Code Playgroud)

c# validation invalid-characters path sanitize

159
推荐指数
8
解决办法
8万
查看次数

118
推荐指数
3
解决办法
8万
查看次数

BroadcastReceiver.onReceive是否总是在UI线程中运行?

在我的应用程序中,我创建一个自定义BroadcastReceiver并通过手动注册到我的上下文Context.registerReceiver.我也有一个AsyncTask发送通知程序 - Intents via Context.sendBroadcast.意图是从非UI工作线程发送的,但似乎BroadcastReceiver.onReceive(接收所述Intents)总是在UI线程中运行(这对我有好处).这是保证还是我不应该依赖它?

android

112
推荐指数
4
解决办法
5万
查看次数

在List <T>和IEnumerable <T>之间自由转换

我怎么能转换List<MyObject>IEnumerable<MyObject>,然后再回来?

我想这样做是为了在List上运行一系列LINQ语句,例如 Sort()

c# linq ienumerable list

102
推荐指数
4
解决办法
16万
查看次数

Thread.Sleep替代.NET for Windows Store

.NET for Windows Store应用程序似乎不支持Thread.Sleep.

例如,这个

System.Threading.Thread.Sleep(1000);
Run Code Online (Sandbox Code Playgroud)

将在针对任何.NET Framework(2.0,3.5,4.0,4.5)进行编译时进行编译,但在针对Windows应用商店应用程序(或者同时针对4.5和存储的可移植类库)中进行编译时不会编译.

System.Threading.Thread仍然存在,它只是没有Sleep方法.

我需要在我的应用程序中延迟几秒钟,是否有合适的替代品?

编辑为什么需要延迟:我的应用程序是一个游戏,延迟是让它看起来像计算机对手正在"思考"他的下一步行动.该方法已被异步调用(主线程未被阻止),我只想减慢响应时间.

.net c# windows-store windows-store-apps

97
推荐指数
4
解决办法
8万
查看次数