小编Voo*_*Voo的帖子

误报:前提是多余的

一旦警告级别达到第二级或更高级别,为什么我会在这个简单的代码示例中收到以下警告?

public int Foo(int a)
{
    if (a >= 0) throw new ArgumentException("a should be negative", "a");
    Contract.EndContractBlock();
    return a;
}
Run Code Online (Sandbox Code Playgroud)

CodeContracts:建议要求:此前提条件是多余的:请考虑将其删除.您是否将结构值与null进行比较?

显然,整数可以是负数,因此前提条件几乎不是多余的,为什么我会收到此警告?

编辑:这是ILSpy在查看exe时为创建的函数显示的内容:

public int Foo(int a)
{
    if (a >= 0)
    {
        ContractHelper.RaiseContractFailedEvent(ContractFailureKind.Precondition, null, "a < 0", null);
        throw new ArgumentException("a should be negative", "a");
    }
    return a;
}
Run Code Online (Sandbox Code Playgroud)

代码合同设置

.net c# static-analysis code-contracts visual-studio-2013

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

为什么名称错位不规范

我只是想知道为什么名称修改从未被C++标准标准化.显然,使用不同的名称修改算法会损害互操作性[1],我认为没有任何优势可以实现定义.

也就是说,与调用约定或基元大小相反,机器本身并不关心甚至不知道如何调用函数.那么为什么它没有标准化,为什么它仍然没有标准化?编译器在版本之间无论如何都改变了规则.

[1]所有出口功能的人都extern "C"说话量大.

c++ name-mangling

32
推荐指数
2
解决办法
3958
查看次数

multiprocessing.freeze_support()

为什么多处理模块需要在"冻结"以生成Windows可执行文件时调用特定函数才能工作?

python py2exe pyinstaller multiprocessing cx-freeze

25
推荐指数
1
解决办法
2万
查看次数

instanceof /的优先级原因

在C#/ Java中,运算符优先级is分别instanceof导致一些丑陋的必要括号.例如,而不是写作if (!bar instanceof Foo)你必须写if (!(bar instanceof Foo)).

那么为什么语言团队认为!运营商优先级高于/ instanceof?不可否认,在C#中你可以覆盖operator!哪些会在某些情况下导致不同的结果,但这些情况似乎非常罕见(并且在任何情况下都不直观),而检查某些东西不是某种类型或子类型的情况很多更倾向于.

c# java language-theory

19
推荐指数
3
解决办法
615
查看次数

为什么我们需要在Lisp中使用funcall?

为什么我们必须使用funcallCommon Lisp中的高阶函数?例如,为什么我们必须使用:

(defun foo (test-func args)
  (funcall test-func args))
Run Code Online (Sandbox Code Playgroud)

而不是更简单:

(defun bar (test-func args)
  (test-func args))
Run Code Online (Sandbox Code Playgroud)

来自程序背景,我有点惊讶,因为我更习惯的语言(例如Python,C#)不需要区分.特别是,至少在源代码级别,C#编译器将其转换为类似的东西func.invoke().

我看到的唯一问题是,这意味着我们不能再调用全局函数test-func,因为它会被遮蔽,但这不是问题.

lisp common-lisp funcall

18
推荐指数
2
解决办法
7748
查看次数

保证相同版本的nuget包

我们有一个框架,在一个解决方案中分成许多单独的项目.我现在想为每个单独的项目创建NuGet包,保证只能在一个解决方案中使用一个版本的框架(可能跨多个项目).

例如,假设框架由两个项目组成:

Framework
   Framework_1
   Framework_2
Run Code Online (Sandbox Code Playgroud)

现在,当使用此框架时,一个项目可能会引用Framework_1,而另一个项目引用Framework_2.我想确保两个软件包具有相同的版本(如果有一个简单的单步过程升级到新版本,则可获得奖励积分)

我想我会定义一个解决方案级别的Framework包,所有其他包都严格依赖它.问题是NuGet只需安装多个版本的解决方案级别包就没有问题.

基本上我尝试了以下内容:

解决方案级别的nuspec文件:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>My.Framework</id>
    <version>1.0.0</version>
    <title>My.Framework</title>
    <authors>voo</authors>
    <owners>voo</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Some Framework Solution Package</description>
    <copyright>Copyright ©  2015</copyright>
  </metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

和一个nuspec包的一部分:

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
  <metadata>
    <id>My.Framework.BL</id>
    <version>1.0.0</version>
    <title>My.Framework.BL</title>
    <authors>voo</authors>
    <owners>voo</owners>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Business Layer</description>
    <copyright>Copyright ©  2015</copyright>
    <dependencies> 
        <dependency id="My.Framework" version="[1.0.0]"/>
    </dependencies>
  </metadata>
</package>
Run Code Online (Sandbox Code Playgroud)

现在的问题是,如果我尝试安装,说另一个My.Framework.EF带有版本的软件包,1.0.1并且对My.Framework1.0.1 的显式依赖Visual Studio只会安装My.Framework两次 …

c# nuget nuget-package visual-studio-2013 nuget-spec

18
推荐指数
2
解决办法
1281
查看次数

从const unordered_map读取对象

为什么我不允许从常量unordered_map中读取对象?

const unordered_map<int, int> z;
int val = z[5]; // compile error
Run Code Online (Sandbox Code Playgroud)

clang下的错误如下:

error: no viable overloaded operator[] for type 'const
      unordered_map<int, int>'
                        int val = z[5];
Run Code Online (Sandbox Code Playgroud)

考虑到使用一个const vector工作正常的等效代码我有点困惑为什么我们得到这种行为.

c++

17
推荐指数
2
解决办法
8607
查看次数

Hotspot7 hsdis PrintAssembly Intel语法

每次我使用-XX:+PrintAssemblyHotspot时都会让我烦恼,并且必须阅读可怕的AT&T语法.

有没有办法告诉它使用英特尔语法?

java assembly jvm-hotspot

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

HTTPClient在成功之前获得两个401s(发送错误的令牌)

我正在尝试使用自我托管的WebAPI客户端进行通信HttpClient.使用以下代码创建客户端:

HttpClientHandler clientHandler = new HttpClientHandler()
{
    UseDefaultCredentials = true,
    PreAuthenticate = true
};
var client = new HttpClient(clientHandler);
Run Code Online (Sandbox Code Playgroud)

在服务器端我们设置:

HttpListener listener = (HttpListener)app.Properties[typeof(HttpListener).FullName];
listener.AuthenticationSchemes = AuthenticationSchemes.IntegratedWindowsAuthentication;
Run Code Online (Sandbox Code Playgroud)

Startup文件中.

问题是我在处理请求之前得到两个(或一个预先认证后)401错误.

在提琴手中,序列看起来像这样:

First request:
Authorization: Negotiate TlRMTVNTUAABAAAAl7II4gcABwAxAAAACQAJACgAAAAGAbEdAAAAD1dTMTEzLTEyMFNXVC0xMTM=
Answer:
WWW-Authenticate: Negotiate TlRMTVNTUAACAAAADgAOADgAAAAVwonisrQOBMTKHhKwCkgCAAAAAJoAmgBGAAAABgGxHQAAAA9TAFcAVAAtADEAMQAzAAIADgBTAFcAVAAtADEAMQAzAAEAEgBXAFMAMQAxADMALQAxADIAMAAEABYAcwB3AHQALQAxADEAMwAuAGwAbwBjAAMAKgBXAFMAMQAxADMALQAxADIAMAAuAHMAdwB0AC0AMQAxADMALgBsAG8AYwAFABYAQQBMAEQASQA5ADkAOQAuAGwAbwBjAAcACACkGh0XVY3QAQAAAAA=

Second request (succeeds):
Authorization: Negotiate TlRMTVNTUAADAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAAAAAAFgAAAAAAAAAWAAAAAAAAABYAAAAFcKI4gYBsR0AAAAPfJafWSuLL0sAXYtWCynOqg==
Run Code Online (Sandbox Code Playgroud)

那么为什么我的客户端不是第一次发送正确的授权令牌,但总是需要这种两次方法?

.net c# authorization http .net-4.5

15
推荐指数
2
解决办法
5010
查看次数

DataGrid SortDirection被忽略

我想在启动时指定默认顺序,但仍然允许用户通过单击列标题进行排序.遗憾的是,SortDirection属性在设置时被忽略 - 即我们得到正确的列标题箭头,但没有任何排序.

手动单击标题,可以正确排序数据,因此不是排序本身.这是我正在使用的简化版本:

<DataGrid ItemsSource="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type Window}}, Path=CurrentView}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Header 1" Binding="{Binding ApplicationName}"/>
        <DataGridTextColumn Header="Header 2" 
               Binding="{Binding TotalTime}" SortDirection="Descending"/>
    </DataGrid.Columns>
</DataGrid>
Run Code Online (Sandbox Code Playgroud)

更新:我还尝试按照建议将SortDescriptions添加到ICollectionView,但没有很好的结果.这可能与我正在动态地向集合中添加新项目这一事实有关吗?即在启动时列表是空的并且慢慢填充,也许排序描述只应用一次?

c# wpf xaml datagrid sortdirection

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