鉴于字符串在.NET中是不可变的,我想知道为什么它们被设计为string.Substring()需要O(substring.Length)时间,而不是O(1)?
即,有什么权衡,如果有的话?
有人可以指出我所期望的id所引用的所有时区的完整列表TimeZoneInfo.FindTimeZoneById()吗?我无法在任何地方找到列表,我查看了.NET文档.
我有一个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) 什么是数据传输对象?
在MVC中是模型类DTO,如果没有,有什么不同,我们是否需要两者?
architecture model-view-controller data-transfer data-transfer-objects dto
我收到了错误.有没有其他人得到这个错误?
'/'应用程序中的服务器错误.
无法加载文件或程序集'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 …
我最近一直在将各种位置的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) 如何转换IEnumerable为ObservableCollection?
在我的应用程序中,我创建一个自定义BroadcastReceiver并通过手动注册到我的上下文Context.registerReceiver.我也有一个AsyncTask发送通知程序 - Intents via Context.sendBroadcast.意图是从非UI工作线程发送的,但似乎BroadcastReceiver.onReceive(接收所述Intents)总是在UI线程中运行(这对我有好处).这是保证还是我不应该依赖它?
我怎么能转换List<MyObject>到IEnumerable<MyObject>,然后再回来?
我想这样做是为了在List上运行一系列LINQ语句,例如 Sort()
.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方法.
我需要在我的应用程序中延迟几秒钟,是否有合适的替代品?
编辑为什么需要延迟:我的应用程序是一个游戏,延迟是让它看起来像计算机对手正在"思考"他的下一步行动.该方法已被异步调用(主线程未被阻止),我只想减慢响应时间.
c# ×8
.net ×3
linq ×2
list ×2
android ×1
architecture ×1
dictionary ×1
dto ×1
ienumerable ×1
odata ×1
path ×1
sanitize ×1
string ×1
substring ×1
timezone ×1
validation ×1