我最近被介绍到一个大型代码库,并注意到所有的字符串比较都使用String.Equals()而不是==
你觉得这是什么原因?
验证参数
在编写方法时,应在执行任何操作之前首先验证参数.例如,假设我们有一个代表人的类:
public class Person
{
public readonly string Name;
public readonly int Age;
public class Person(string name, int age)
{
this.Name = name;
this.Age = age;
}
}
Run Code Online (Sandbox Code Playgroud)
这个Person类出了什么问题?在将值设置为Person字段之前,不验证名称和年龄."验证?"是什么意思?应该检查两个参数,它们的值是可接受的.例如,如果name的值是空字符串怎么办?或者年龄的值是-10?
通过在值不可接受时抛出ArgumentExceptions或派生异常来执行验证参数.例如:
public class Person(string name, int age)
{
if (String.IsNullOrEmpty(name))
{
throw new ArgumentNullException
("name", "Cannot be null or empty.");
}
if (age <= 0 || age > 120)
{
throw new ArgumentOutOfRangeException
("age", "Must be greater than 0 and less than 120.");
}
this.Name = name;
this.Age = …Run Code Online (Sandbox Code Playgroud) 我用a Dictionary<>来存储数以亿计的物品.是否可以安全地假设,只要服务器的内存有足够的空间来容纳我将接近O(1)从中检索项目的这些无数物品?当性能很重要时,我应该知道如何将通用词典用作大缓存?
编辑:我不应该依赖默认的实现?是什么促成了良好的散列函数?
我有两个Visual Studio解决方案的源代码.一个是调用WCF服务的网站,另一个是编译成DLL的WCF服务.该网站将WCF服务的二进制DLL作为参考.
问题在于:当我运行网站时,未捕获的异常从WCF服务开始.
如何在Visual Studio中运行WCF服务,以便在WCF服务中设置断点?服务项目设置为编译成DLL,我无法调试带有断点的DLL.在一次Visual Studio实例中"运行"服务并在另一个实例中运行网站时触发异常需要做什么?
这是我第一次接触WCF.
PS:我尝试将WCF服务的项目添加到网站的解决方案中,并因为WCF服务具有依赖关系而得到一些关于我将无法调试它的错误,因此看起来似乎没有选项.
我有一个使用编译DLL从另一个Visual Studio解决方案的ASP.NET网站(有DLL的原始解决方案- .cs文件.csproj,.sln等)作为参考.
从这个DLL进入网站有一个例外,我想调试它(DLL).我可以这样做吗?我可以深入研究DLL,设置断点等吗?我听说过"附加调试器",但我从未这样做过,当然也没有使用DLL.这样做的步骤是什么?