草庐IT

行为不当

全部标签

c# - 令人惊讶的子串行为

我今天在使用Substring方法时遇到了这种行为:staticvoidMain(string[]args){stringtest="123";for(inti=0;true;i++){try{Console.WriteLine("\"{0}\".Substring({1})is\"{2}\"",test,i,test.Substring(i));}catch(ArgumentOutOfRangeExceptione){Console.WriteLine("\"{0}\".Substring({1})threwanexception.",test,i);break;}}}输出:"123

c# - 具有驱动器号的 Path.Combine() 行为

根据有关Path.Combine方法的官方文档:https://msdn.microsoft.com/en-us/library/fyy7a5kt(v=vs.110).aspxRemarksIfpath1isnotadrivereference(thatis,"C:"or"D:")anddoesnotendwithavalidseparatorcharacterasdefinedinDirectorySeparatorChar,AltDirectorySeparatorChar,orVolumeSeparatorChar,DirectorySeparatorCharisappended

c# - System.Web.Configuration.WebConfigurationManager 和 System.Configuration.ConfigurationManager 之间的行为差​​异

我在带有ASP.NET网站的测试服务器上遇到了一些问题。我傻了,有了家默认网站的目录指向了错误的位置。当我尝试时:ConfigurationManager.ConnectionStrings["connectionString"];它返回了null,但是usingSystem.Web.Configuration;/*...*/varrootWebConfig=WebConfigurationManager.OpenWebConfiguration(Request.ApplicationPath);WebConfigurationManager.OpenWebConfiguration(

c# - 为什么 ComputeHash 的行为不是确定性的?

我遇到了一个有趣的问题。似乎“HMACSHA256”散列的ComputeHash()的行为不是确定性的。如果我使用HashAlgorithm.Create(“HMACSHA256”)创建两个HashAlgorithm实例......并且运行ComputeHash,我得到两个不同的结果。下面是展示此行为的示例静态类。internalstaticstringHashPassword(byte[]bAll){using(HashAlgorithms=HashAlgorithm.Create("HMACSHA256")){returnConvert.ToBase64String(s.Compu

C# foreach 派生类的行为?

现在我有一个相对简单的类设置:classA{//stuff}classB:A{//morestuff}publicListListOfObjects;如果我这样做会发生什么foreach(BiinListOfObjects)我只能得到类型B的对象吗?它会应用一些OO魔法并将所有As转换为Bs吗?这还能行得通吗? 最佳答案 如果列表中有A(或其他不是B或B的子类的东西),那么它将简单地打破无效类型转换。你可能想要:foreach(BiinListOfObjects.OfType()){...}在.NET3.5中。(我假设列表本身是非空

c# - 文件名中有分号或左括号时的 FileUpload.FileName 行为

我有一个FileUpload控件,对文件名有某些限制,某些字符不应被允许。以下代码适用于大多数字符,但由于某些原因不适用于其他字符:if(FileUpload1.HasFile){if(FileUpload1.FileName.Contains('#')||FileUpload1.FileName.Contains('&')||FileUpload1.FileName.Contains(';')||FileUpload1.FileName.Contains('{')||FileUpload1.FileName.Contains('}')||FileUpload1.FileName.Co

c# - WCF 自定义行为的依赖注入(inject)

在我的WCF服务中,我有一个自定义消息检查器,用于根据XML模式将传入消息验证为原始XML。消息检查器有一些它需要的依赖项(例如记录器和XML模式集合)。我的问题是,我可以使用依赖注入(inject)框架(我目前正在使用Ninject)来实例化这些自定义行为并自动注入(inject)依赖项吗?我做了一个简单的例子来演示这个概念:usingSystem.ServiceModel.Channels;usingSystem.ServiceModel.Description;usingSystem.ServiceModel.Dispatcher;usingNinject.Extensions.

c# - 泛型类型值和 '==' 关键字的 'default' 运算符的行为是什么?

问题的第1部分:在下面的代码中,为什么value==default可以正常编译,而其他替代方案却不能?boolMyEqual(Tvalue){Tvalue2=default;if(value==value2)//Error:Operator'=='cannotbeappliedtooperandsoftype'T'and'T'returntrue;if(value==default(T))//Error:Operator'=='cannotbeappliedtooperandsoftype'T'and'T'returntrue;if(value==default)//Noerrorre

c# - .Net Identity 中 UserManager 的奇怪行为

为了让这个问题简单化,我将描述更高层次的问题,然后在需要时讨论任何实现细节。我在开发中的应用程序中使用ASP.NET标识。在一系列请求的特定场景中,UserManager首先获取当前用户(至少一个FindById请求),从中获取用户。在后续请求中,我更新了由U​​serManager.Update保存的关于该用户的信息,我可以看到数据库中保存的更改。这里的问题是,在进一步的后续请求中,从FindById获取的用户对象没有更新。这很奇怪,但可能与我不明白的UserManager中的缓存有关。但是,当我跟踪数据库调用时,我发现UserManager确实正在向数据库发送sql请求以获取用户。

c# - 为什么 stackalloc 初始化有不一致的行为?

以下代码用非零值初始化两个stackalloc数组。虽然数组A已正确初始化,但数组B仍填充零,这与预期相反。通过反汇编编译后的可执行文件,可以看到没有为数组B生成初始化代码,这是为什么?usingSystem;namespaceConsoleApp1{classProgram{staticunsafevoidMain(string[]args){doublea1=1;double*A=stackallocdouble[]{a1,0,0,a1,a1};//resultsin10011double*B=stackallocdouble[]{a1,0,0,0,0};//resultsin00