我正在运行ReSharper的测试版,它给了我以下代码的警告:
int id;
// ...
DoSomethingWith(id.ToString());
Run Code Online (Sandbox Code Playgroud)
警告在id.ToString()通话中,它告诉我"明确指定字符串转换中的文化".我理解这个警告,而且我知道如何修复它 - 只需将代码更改为更加笨拙id.ToString(CultureInfo.InvariantCulture).
但我的问题是:这是必要的吗?我的意思是,显然,当您使用类型DateTime(不同的文化具有不同的日期格式)和Double(用于小数点的不同字符)时,指定文化很重要.但是Int32.ToString(),至少在en-US和invariant文化中,根本不添加任何格式.没有逗号,没有小数点,没有美元符号,没有.那么文化会有什么不同?
当您调用无参数时,是否有一些文化实际上会添加某种格式Int32.ToString()?或者这是ReSharper测试版中的错误,这个警告真的不适用Int32(在这种情况下我会提交ReSharper错误报告)?
我有一个代码段:
public class MyClass
{
private string _myProperty;
public string MyProperty
{
get
{
return _myProperty;
}
set
{
_myProperty = value;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这有什么意义?我可以将_myProperty字符串声明为public,并且我的任何类对象都可以直接访问它们并获取或设置值.
相反,我们_myProperty使用类对象使私有和使用get和set来访问它们.
在任何一种情况下,类对象都能够访问它们,结果总是相同的.
那么为什么要用这种方法?这只是因为我可以在setter中实现一些约束吗?
除此之外会对成员变量造成什么危害呢?在这个例子中,我可以公开_myProperty公开,而不是像OOP所暗示的那样将它限制在这个类中.
我们有一个存储过程,全天有15个用户每天调用大约300,000次.我已经倾注了每一条线,它和我能得到的效率一样高.
存储过程通过4.0上的ASP.NET页面从基本Winterms上的旧版VB6应用程序访问.
当我查看SQL跟踪文件时,我看到以下内容:
我在第4步看到,读取和写入都很高,这是有道理的,因为它是在池中重用的连接的累积.
我关心的是需要多长时间,有时需要50ms,有时需要400ms,这完全是随机的.从文档中我读到"审核注销"是所有三个步骤的整个持续时间.但步骤1-3非常快,如0-5ms.为什么"审核注销"持续时间需要这么长时间?
我需要同时向Web服务发出多个请求.我想为每个请求创建一个线程.可以在ASP.NET v3.5中完成吗?
例:
for(int i = 0; i<=10; i++)
{
"Do each Request in a separate thread..."
}
Run Code Online (Sandbox Code Playgroud) 假设我有一个Dictionary<string, string>.字典public static在我的控制台程序中声明.
如果我正在使用线程,我想从一个线程做到foreach这一点Dictionary但同时另一个线程想要将项添加到字典中.这会导致这里的错误,因为我们Dictionary在另一个线程中使用foreach循环运行它时无法修改它们.
为了绕过这个问题,我在字典上的每个操作上的同一个静态对象上创建了一个锁定语句.
这是绕过这个问题的最佳方法吗?我Dictionary可以非常大,我可以有很多线程想要在它上面.就目前而言,事情可能非常缓慢.
c# ×4
.net ×2
asp.net ×2
asp.net-4.0 ×1
c#-4.0 ×1
cultureinfo ×1
oop ×1
resharper ×1
web-services ×1