小编Chr*_*tte的帖子

为什么/ .Net允许我否定一个空的Nullable <T>?

我发现自己正盯着看起来与此类似的代码:

private double? _foo;

public double? Foo
{
    get { return _foo; }
    set { Baz(-value); }
}

public void Baz(double? value)
{
    // Perform stuff with value, including null checks
}
Run Code Online (Sandbox Code Playgroud)

在测试中,我有这个:

[Test]
public void Foo_test()
{
    ...
    Foo = null;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我预计测试会失败(抛出),因为我认为你真的不能应用一元减号null,我认为这会在Foos setter中发生.然而,意想不到的事情发生,并测试并没有失败.

我可能会对这是为什么会发生这种情况做出明智的猜测,但我认为如果知道发生了什么事的人可以启发我会更好.

(并且在有人指出显而易见的事实之前:是的,这种否定应该被推到内部Baz.)

编辑并跟进

所以,我从乔恩斯基特和JaredPar,谁回答都将投入感谢如何,我的问题的一部分.经过一些谷歌搜索后,我发现Eric Lippert的这篇博客文章解释了"提升"的数学定义,这非常有意义.我还阅读了语言规范的相关部分,这些部分非常简单地解释了c#中提升的机制.

具体来说,我现在知道在提升过程的早期,对操作数进行空检查,如果操作数为null,则null将是应用运算符的结果(在我的情况下是一元减号).所以-nullnull.

现在,问题的"为什么"部分.如果我operator -在a上定义我自己的(一元)class(在其中我否定一个包装的值),并在空引用上调用此运算符,我将得到一个NullReferenceException.为什么"提升"表现不同? …

.net nullable

5
推荐指数
2
解决办法
643
查看次数

如何找到运行msi安装程序的位置

谁能告诉我如何找到运行msi安装程序的位置。

例如,我Sample.msi在桌面上的InstallerExample文件夹中有我的and Manuals文件夹。

我需要这些信息,以便可以在File / @ Source中使用它,就像下面给出的那样。

<File Id="MyFileId" Name="MyFile" Source="[SourceDir]Manuals" KeyPath="yes" >
Run Code Online (Sandbox Code Playgroud)

SourceDir 应该有价值 C:\Users\bla\Desktop\InstallerExample\Manuals

如果有人可以帮助我,那就太好了。

wix

5
推荐指数
1
解决办法
2831
查看次数

Web应用程序的HTML + JavaScript的局限性和未来

我是一名非网络程序员,但我现在对网络技术更感兴趣.

我知道HTML和JavaScript今天是Web应用程序的基本技术,但实际上它们似乎并非严格意义上的创建.(HTML是为网页创建的,JavaScript是为了使它们有点动态).它对今天如何创建高级Web应用程序有任何重大负面影响吗?有什么限制?

你是否预测5到10年内会出现什么新技术来取代HTML + JavaScript?如果是,那会是什么样的?

html javascript web-applications

3
推荐指数
1
解决办法
1926
查看次数

如何在 Linq OrderBy 子句中应用默认的 IComparable&lt;T&gt;

我有一个类型,它在实现IComparable<T>IComparable. 我没有从 LINQ 得到我期望的结果,基本上看起来好像IComparable<T>没有应用该类型实现的。

我以为我会用以下形式的表达式得到我想要的结果:

var result = MyEnumerable<T>.OrderBy(r => r); 
Run Code Online (Sandbox Code Playgroud)

其中T自身实现IComparable<T>。它没有发生。

我可以看到相关的问题,其中IComparable<T>为排序指定了特定的类,但我找不到一个使用自己IComparable<T>实现的默认值的问题T

我的语法显然不正确。请问正确的语法是什么?

提前致谢。

linq sql-order-by icomparablet

3
推荐指数
1
解决办法
1987
查看次数

Twitter Bootstrap模式

我这两天都吓坏了......

我已经使用Bootstrap CSS设置了一个页面,页面头部中包含以下代码:

<link rel="stylesheet" href="bootstrap.min.css">
<script type="text/javascript" src="http://openclassifieds.googlecode.com/svn-history/r119/branches/2.0/themes/twitter/js/bootstrap-modal.js"></script>
<script type="text/javascript" src="http://openclassifieds.googlecode.com/svn-history/r119/branches/2.0/themes/twitter/js/bootstrap-transition.js"></script>    
<script type="text/javascript" src="http://openclassifieds.googlecode.com/svn-history/r119/branches/2.0/themes/twitter/js/jquery.js"></script>
Run Code Online (Sandbox Code Playgroud)

在我的身体里,我有这个:

<button class="btn btn-large btn-primary" data-toggle="modal" data-target="#modal-signin" data-backdrop="true" data-keyboard="true">Launch Modal</button>

<div id="modal-signin" class="modal hide fade">
    <div class="modal-header">
        <a href="#" class="close" data-dismiss="modal">×</a>
        <h2>Sign in <small>or sign up</small></h2>
    </div>
    <div class="modal-body">
        <h3>Teste</h3>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

在Bootstrap文档中,这是我必须要做的才能使其工作,但是当我点击按钮时它没有做任何事情......我不知道问题是什么......我需要紧急帮助

谢谢.

javascript css jquery twitter-bootstrap

1
推荐指数
1
解决办法
2376
查看次数

如何找到多个子串

我已经存储了出生日期的var char格式:

示例:1989-8-15

我想找出它的子字符串,即我想要单独的年,月和日期.我用以下代码尝试过它:

string dateOfbirth = (string)(DataBinder.Eval(e.Item.DataItem, "dob"));

int length = (dateOfbirth).Length;
int index1 = dateOfbirth.IndexOf('-');
int index2 = dateOfbirth.IndexOf('-', index1 + 1);
string year = dateOfbirth.Substring(0, index1);
string month = dateOfbirth.Substring(index+1, index2-1);
string day = dateOfbirth.Substring(index2, length);
Run Code Online (Sandbox Code Playgroud)

我收到了一个错误.请提出解决方案.提前致谢.

c# substring

1
推荐指数
1
解决办法
386
查看次数