小编Dav*_*itt的帖子

为什么在访问Perl中的数组和哈希元素时需要$?

由于数组和散列只能包含Perl中的标量,为什么在访问数组或散列元素时必须使用$来告诉解释器该值是标量?换句话说,假设您有一个数组@myarray和一个哈希%myhash,为什么需要这样做:

$x = $myarray[1];
$y = $myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)

而不只是做:

$x = myarray[1];
$y = myhash{'foo'};
Run Code Online (Sandbox Code Playgroud)

为什么上面的含糊不清?

如果除了那个地方的$之外,它不是非法的Perl代码吗?例如,Perl中的以下都不是非法的吗?

@var[0];
@var{'key'};
%var[0];
%var{'key'};
Run Code Online (Sandbox Code Playgroud)

arrays perl hash sigils

11
推荐指数
7
解决办法
2749
查看次数

如何对IDis单位进行单元测试?

我正在研究一个库代码IDisposable.管理路径(via using)很容易测试.我想知道终结器:是否System.GC.Collect()足以强制终结器运行?

.net garbage-collection unit-testing idisposable

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

在MSBuild中使用Studio的"自定义工具"

我有一个Visual Studio的"自定义工具",可以将一些模板文件转换为代码.为了保持一致性和可移植性,我希望能够在Visual Studio外部构建时从MSBuild运行此模板处理器.

Visual Studio为文件创建以下代码段:

<!-- the template -->
<None Include="Template.in">
  <Generator>Template Processor</Generator>
  <LastGenOutput>Template.in.Designer.cs</LastGenOutput>
</None>
<!-- generated file -->
<Compile Include="Template.in.Designer.cs">
  <AutoGen>True</AutoGen>
  <DesignTime>True</DesignTime>
  <DependentUpon>Template.in</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)

这里的问题Template.in是它只由Studio处理,而不是由MsBuild处理,这可能导致过时的Designer.cs文件.

是否存在可以IVsSingleFileGenerator直接使用(包括从注册表加载其位置)的现有MSBuild任务,还是必须手动调用处理器(通过自己实现所述MSBuild任务或调整处理器)?

有趣的是,MSDN上的使用MSBuild文章说:

单个文件生成器只能在设计时访问,但MSBuild任务可以在设计时和构建时使用.因此,为了获得最大的灵活性,请使用MSBuild任务来转换和生成代码.有关更多信息,请参阅项目项(Visual Studio SDK).


更新:我已经将这个特定的自定义工具入侵到了msbuild任务中,但它并不漂亮.我仍然更喜欢维护良好的通用解决方案.我在我的博客上发布了这个来源.

msbuild customtool visual-studio

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

使用git-svn时避免冲突

伙计我在以下场景中从共享git仓库中拉出时遇到重复的代码冲突:

  1. 有一个共同的svn存储库

  2. 有几个开发人员使用git-svn桥跟踪/同步这个常见的svn repo和他们自己的本地git repos(通过git svn rebase/dcommit)

  3. 这些使用git的开发人员有时需要在不影响svn存储库的情况下共享其更改.为此,他们设置了一个共享的git repo并使用pull/push命令交换他们的工作

  4. 事实证明,由于使用"git svn rebase"与主svn repo同步,这些开发人员可能会遇到冲突问题.发生这种情况是因为rebase操作会重写本地git分支的历史记录,并且无法进入共享git仓库并从中拉出它通常会导致冲突.

有人有同样的问题吗?

svn git version-control git-svn

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

使用快速磁盘存储(SSD)进行优化的算法?

鉴于固态硬盘(SSD)的价格正在下降并且很快将变得更加普遍,因为它们的访问速率明显高于旋转磁介质,那么标准算法将通过使用SSD来获得性能存储?例如,SSD的高随机读取速度使得类似于基于磁盘的散列表具有大型散列表的可行性; 容易获得4GB的磁盘空间,这使得散列到32位整数的整个范围都是可行的(更多的是查找而不是人口,但这仍然需要很长时间); 虽然由于访问速度的原因,这个哈希表的大小将无法与旋转媒体一起使用,但它不应该是SSD的问题.

是否有任何其他领域即将过渡到SSD将提供算法性能的潜在收益?我宁愿看到关于一件事情如何发挥而不是舆论的推理; 我不希望这变成有争议的.

algorithm optimization performance solid-state-drive hashtable

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

检查C#new()初始化为null?

我在Koders上找到了这段代码:

private ServiceProvider SiteServiceProvider
{
    get
    {
        if (serviceProvider == null)
        {
            serviceProvider = new ServiceProvider(site as VSOLE.IServiceProvider);
            Debug.Assert(serviceProvider != null, "Unable to get ServiceProvider from site object.");
        }
        return serviceProvider;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道,有什么可能Debug.Assert(serviceProvider != null触发的方式吗?我的印象是new只能被异常中止,在这种情况下永远不会达到断言.

c# exception new-operator

9
推荐指数
2
解决办法
1426
查看次数

RoutedCommand的类构造函数ownertype参数有什么用?

RoutedCommand的构造函数将"owner type"作为最后一个参数.它的意义是什么?什么时候使用?

MSDN文档完全不知道为什么需要它以及我是否可以为所有命令使用一种类型

从MSDN引用

ownerType
     Type: System.Type The type
     which is registering the command.
Run Code Online (Sandbox Code Playgroud)

还有一件事.从名称数组动态创建新的路由命令时,我应该使用什么类型.它看起来像任何类型的工作,所以我使用UIElement,但如果有一个更适合的类型,我想知道.

wpf routed-commands

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

WPF绑定集合到ComboBox并选择一个项目

我已经在一段时间内对抗这个问题了.我不确定为什么它不起作用.我对这整个WPF业务还很陌生.

这是我的组合框的XAML

<ComboBox 
    SelectedValuePath="Type.FullName"
    SelectedItem="{Binding Path=Type}"
    Name="cmoBox" />
Run Code Online (Sandbox Code Playgroud)

这是填充ComboBox的内容(myAssembly是我用可能类型列表创建的类)

cmoBox.ItemsSource = myAssembly.PossibleTypes;
Run Code Online (Sandbox Code Playgroud)

我将DataContext设置在后面的代码中的ComboBox的父元素中,如下所示:

groupBox.DataContext = listBox.SelectedItem;
Run Code Online (Sandbox Code Playgroud)

我希望绑定从组合框中选择正确的"可能类型".它没有选择任何东西.我尝试过SelectedValue和SelectedItem.当我将ComboBox的DisplayMemberPath更改为其他属性时,它更改了显示的内容,因此我知道它并未完全破坏.

有任何想法吗???

.net data-binding wpf combobox

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

如何比较相同但不受约束的泛型类型的两个元素是否相等?

可能重复:
不能将运算符==应用于C#中的泛型类型?

我有以下泛型类,编译器抱怨" Operator '!=' cannot be applied to operands of type 'TValue' and 'TValue'"(见CS0019):

public class Example<TValue>
{
    private TValue _value;
    public TValue Value
    {
        get { return _value; }
        set
        {
            if (_value != value) // <<-- ERROR
            {
                _value= value;
                OnPropertyChanged("Value");
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我限制TValueclass,我可以使用Object.Equals().既然我需要这个结构和类,我会很高兴,如果我可以避免这一点.

所以问题是,如何比较相同但不受约束的泛型类型的两个元素的相等性?

c# generics struct class equals

8
推荐指数
2
解决办法
3514
查看次数

MonoDevelop在Windows上

我的google-fu让我失望了 - 可以在Windows上使用MonoDevelop吗?最好不必从源代码编译?

它在我的家庭Ubuntu盒子上运行良好,虽然我在工作中使用Visual Studio,但MonoDevelop似乎也有一些优势.

编辑:我知道SharpDevelop; 如果可能的话,我更愿意使用MonoDevelop,因为我已经开始熟悉界面了,我相信SharpDevelop和MonoDevelop不再那么紧密相关.


哇噢!MonoDevelop for Windows是受支持的下载.

windows monodevelop

8
推荐指数
2
解决办法
6747
查看次数