我可以说使用double(或float)代替以下三个优点decimal:
但这些优势似乎只适用于计算密集型操作,例如建模软件中的操作.当然,在需要精确度时,不应使用双精度数,例如财务计算.那么有没有任何实际的理由选择double(或float)而不是decimal"正常"的应用程序?
编辑补充:感谢所有伟大的回应,我向他们学习.
还有一个问题:一些人认为双打可以更精确地代表实数.宣布时,我认为他们通常也会更准确地代表他们.但是,当执行浮点运算时,准确度是否会降低(有时是显着的)是真实的说法吗?
当我得到不同的记录计数时,出现了这个问题,我认为是使用not in where约束的相同查询,另一个是a left join.not in约束中的表有一个空值(坏数据),导致该查询返回0个记录的计数.我有点理解为什么,但我可以使用一些帮助来完全理解这个概念.
简单地说,为什么查询A返回结果但B不返回?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
Run Code Online (Sandbox Code Playgroud)
这是在SQL Server 2005上.我还发现调用set ansi_nulls off导致B返回结果.
我最近遇到过几个例子:
<dl>
<dt>Full Name:</dt>
<dd><input type="text" name="fullname"></dd>
<dt>Email Address:</dt>
<dd><input type="text" name="email"></dd>
</dl>
Run Code Online (Sandbox Code Playgroud)
用于做HTML表单.这是为什么?使用表格有什么好处?
我有一个包含两个可为空的十进制属性的业务类.第三个属性返回乘以其他两个属性的结果.如果两个可空类型的HasValue为真,那么我乘以并返回结果.如果一个或两个属性为null,我有一些返回值的选项:
我认为我的一个选择是返回NaN,但我发现这只适用于double类型.为什么是这样?
对于记录,在这种情况下返回0是最有意义的,这是我打算做的事情,除非有人有更好的建议.
ASP.NET FormView控件的整个目的是一次显示一条记录.那么如何将其绑定到单个记录?它抱怨说
数据源是无效类型.它必须是IListSource,IEnumerable或IDataSource.
如果这是唯一的解决方案,我可以将我的对象包装在列表中.在这个应用程序中,FormView位于用户控件内,我正在公共方法中检索对象,即我没有使用数据源控件.我也没有在这里进行任何双向数据绑定,在这种情况下我只使用FormView来保持一致的外观.
如果我阅读了本书并将FormView绑定到返回记录列表的数据源,它是否会实际检索所有记录并仅显示所选记录?
这是我最终在实用程序类中实现的内容:
public static IEnumerable<T> WrapInEnumerable<T>(T item)
{
return new T[] {item};
}
Run Code Online (Sandbox Code Playgroud) 您可以在接口方法中声明可选参数,但不需要实现类来将参数声明为可选参数,正如Eric Lippert解释的那样.相反,您可以在实现类中将参数声明为可选参数,但不能在接口中声明.
那么有什么理由在接口中声明可选参数吗?如果没有,为什么允许?
例子:
public interface IService1
{
void MyMethod(string text, bool flag = false);
}
public class MyService1a : IService1
{
public void MyMethod(string text, bool flag) {}
}
public class MyService1b : IService1
{
public void MyMethod(string text, bool flag = true) { }
}
public interface IService2
{
void MyMethod(string text, bool flag);
}
public class MyService2b : IService2
{
public void MyMethod(string text, bool flag = false) { }
}
Run Code Online (Sandbox Code Playgroud) 是否有任何好的技术可以帮助我们了解我们的工作副本来自哪个分支(或主干)?我们最近转换为Subversion,我们正在使用发布分支.我有两个开发人员提交应该已经提交到主干的发布分支的更改.我们正在使用CI(TeamCity),因此我立即认识到了这个问题,并且能够恢复更改,但我想阻止它再次发生.特别是在Visual Studio中,很容易犯错并承诺错误的分支.
我们正在使用TortoiseSVN和AnkhSVN.
编辑补充:为了澄清,我正在寻找一种防止粗心错误的方法,我已经知道如何找到这些信息.我试图阻止两个粗心的错误:
编辑添加:我们刚刚切换到VisualSVN VS插件,它有一个工具栏,显示当前工作副本的路径.我真的很喜欢我在正确的分支上工作.
我正在努力寻找模拟1:0,1关系("可能有一个"或"最多只有一个")的最佳方式.我相信这被称为Z基数.
例如,假设我有两个类Widget和WidgetTest.并非所有小部件都经过测试且测试具有破坏性,因此每个小部件最多只能有一个WidgetTest.还假设将WidgetTest字段添加到Widget是不合适的.
我希望我的公共界面是:
Widget
WidgetTest { get; set; }
WidgetTest
Widget { get; }
Run Code Online (Sandbox Code Playgroud)
模型1:Widget具有WidgetTest属性,并且在数据库中Widget表具有WidgetTest的唯一约束外键.我的DBA辩称,这将允许WidgetTest记录在没有Widget的情况下存在.
WidgetTable
WidgetTestId (FK, UQ)
Run Code Online (Sandbox Code Playgroud)
模型2:Widget具有WidgetTest的私有集合,并通过在公共WidgetTest属性控制的集合中添加或删除单个对象来强制执行0,1关系.数据库将此模型设置为1:m,WidgetTest具有对Widget唯一约束的外键.我认为这意味着采用该模型来适应数据库模式(即为我做更多的工作).
WidgetTestTable
WidgetId (FK, UQ)
Run Code Online (Sandbox Code Playgroud)
哪种型号更好?使用NHibernate更容易实现哪些?还是有第三种方式?
编辑......这是我最终得到的结果:
public class Widget
{
// This is mapped in NH using a access strategy
private IList<WidgetTest> _widgetTests = new List<WidgetTest>(1);
public WidgetTest
{
get { return _widgetTests.FirstOrDefault(); }
set
{
_widgetTests.Clear();
if (value != null)
{
_widgetTests.Add(value);
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想在我的Fluent NHibernate配置中将默认事务级别设置为ReadCommitted.如果我使用的是XML映射文件,我可以在配置文件中添加一个键:
<add key="hibernate.connection.isolation" value="ReadCommitted" />
Run Code Online (Sandbox Code Playgroud)
但我无法弄清楚如何使用Fluent配置来实现这一目标.
如果由于单元测试失败而导致构建失败,如何设置TeamCity以使其不发布构建工件?我很确定它在版本6.0之前就已经有了这种方式,但是由于升级到6.0,即使测试失败也总会产生工件.我检查了"如果至少有一个测试失败,则构建失败".
我们收到电子邮件通知中断,我不知道我们有构建问题,因为它继续产生工件.
c# ×3
nhibernate ×2
types ×2
ankhsvn ×1
asp.net ×1
c#-4.0 ×1
css ×1
data-binding ×1
decimal ×1
double ×1
forms ×1
html ×1
notin ×1
null ×1
oop ×1
sql ×1
sql-server ×1
svn ×1
t-sql ×1
teamcity ×1
teamcity-6 ×1
tortoisesvn ×1
visualsvn ×1