特别是在使用String.Format的C#世界中,一切都很常见,通常作为VB.NET开发人员,除非我必须*我不是String.Format,
我更喜欢正常的字符串连接,例如:
V1 = V2 & "test-x" & V3 & "-;"
Run Code Online (Sandbox Code Playgroud)
对我而言,这比这更好:
V1 = String.Format("{0} test-x {1} -;", V2, V3)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?或者这仅仅是个人偏好?
使用String.Format的原因(来自答案)(我会尽量保持最新)
**有时我需要动态更改样式或替换东西然后我使用String.Format*
我正在寻找.NET中的线程池库
我已经有了自己的解决方案,支持所有这些,但我不确定它是否是最好的实现.所以我想看看其他库.
这将主要用于HTTP请求,因此更少的CPU响应等待.这意味着可以接受100个并发线程.
我知道我们可以通过定位AnyCPU来编译.NET应用程序,这将导致在32位操作系统中运行32位,在64位操作系统中运行64位.
然而,在64位操作系统上有一个报告错误*,我的应用程序出错并为此提供了解决方案,我需要针对x86.
现在我的问题是:即使你的代码要在x64中运行,定位x86真的很糟糕吗?我们在谈论什么样的表现?(我的应用程序是CPU密集型的,但很难想出来)
毕竟.NET Framework将在32位运行,这对我来说听起来不好,而不是采用x64 CPU**的完全寻址能力.
*我不记得错误,但解决方案专门针对x86,并解决了问题.
**我不确定它是否有任何重要但我的应用程序不使用任何Int64变量.
我有一个shared类(static在C#中),它主要带有一些设置数据,应用程序中的任何类都可以读取并有时写入.还有一些静态属性,它们包含一些内部状态.
现在我想将这个类恢复到它的初始阶段.使用所有默认变量等.假设用户想要重置当前状态并重新开始而不重新启动应用程序.
在单例模型中,我只需使用以下内容进行更新:
Public Sub Reset()
_Instance = New MyClass()
End Sub
Run Code Online (Sandbox Code Playgroud)
然而,这在Shared课堂上是不可能的.有什么想法我怎么能做到这一点?或者我应该切换回 Singleton?
当你像这样创建一个新的Uri时:
New Uri(New Uri("http://example.com/test.php"),"?x=y")
Run Code Online (Sandbox Code Playgroud)
它返回:
http://example.com/?x=y
Run Code Online (Sandbox Code Playgroud)
应该归还:
http://example.com/test.php?x=y
Run Code Online (Sandbox Code Playgroud)
根据那里的每个主要浏览器(我不太确定RFC说的是什么).
这是一个错误还是有任何其他功能正常,还有什么是最好的方法来修复它而不重新发明轮子?
据我所知,WebRequest.PreAuthenticate几乎总是好的.
如果我启用它,即使没有凭据也不会尝试进行身份验证,如果有凭据则会.那么有任何正当理由将其设置为False吗?或者即使没有凭据也可以将其设置为True?
并且因为它非常有用,为什么它没有像许多其他HTTP功能一样默认启用?
我们的工具在诊断模式下生成性能日志,但是我们跟踪代码执行时间(秒表+毫秒)的性能.
显然它根本不可靠,测试系统的CPU可以被一些随机过程使用,如果你的工具配置为运行10个线程而不是2个,结果将完全不同,等等.
我的问题是:
找出一段代码(而不是整个过程)的正确CPU时间的正确方法是什么?
我的意思是CPU时间:
基本上CPU花了多少周期.我假设对于同一台计算机中的同一段代码,它将始终相同,并且不受其他进程的影响.我可能会在这里遗漏一些基本的东西,如果是这样,请在评论或答案中启发我.
PS在我们的设置中无法使用分析器
另一个更新,
为什么我不打算使用分析器
因为我们需要在具有不同数据的不同环境中测试代码,而我们没有分析器或IDE或类似的东西.因此代码本身应该处理它.一个极端的选择可能是使用分析器的DLL,但我不认为这个任务需要这么复杂的解决方案(假设没有免费且易于实现的分析库).
我正试图从CodeRush切换到Resharper并且真的在努力解决这个问题.
在CodeRush中,当你超过一个变量/方法等时,如果按" Tab"它将跳转到下一次使用它.与VS.NET类似Ctrl + Shift + Down/up
无论如何在Resharper中这样做?是否有任何插件或方法让我在Resharper中将Tab分配给类似的命令?
由于.NET不使用C样式null来结束字符串,我如何保留分配的字符串,但使用不安全的代码来改变它的长度?
据我所知,.NET为每个字符串使用一个20字节的标头,大概这是存储字符串长度的地方,无论如何直接修改这个长度?因此,.NET会将字符串保留在内存中,但是当我调用.Length它时,它将返回.Length我想要的内容.
如果这是可能的,那么听到所有可能的副作用也会很有趣
UPDATE
我正在努力完成这个而不使用反射.
.net ×9
c# ×3
performance ×2
vb.net ×2
64-bit ×1
coderush ×1
coding-style ×1
constructor ×1
cpu-usage ×1
format ×1
http ×1
linq ×1
optimization ×1
resharper ×1
shared ×1
static ×1
string ×1
unsafe ×1
uri ×1
webrequest ×1