小编BCS*_*BCS的帖子

为什么C#中的命令对静态初始化很重要?

此代码在C#中具有明确定义的行为:

class Foo
{
    static List<int> to = new List<int>( from ); // from is still null
    static IEnumerable<int> from = Something();
}
Run Code Online (Sandbox Code Playgroud)

注意:我不是问如何修复该代码,因为我已经知道如何做到这一点

这有什么理由?C#已经进行了运行时检查,以检测对静态成员的第一次访问.为什么不将它扩展到每个成员的东西并让它们按需运行,甚至更好的让编译器在编译时弄清楚顺序?

顺便说一句:我认为同样的问题(或几乎相同)也适用于非静态成员.

c# language-theory

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

广义的可插入缓存模式?

鉴于它是计算机科学的难点之一,有没有人知道建立可插入缓存策略的方法?

我正在考虑的是允许我编写一个程序,只考虑需要缓存的内容(ei使用某种类型的样板,低成本/无成本模式,在任何我想要缓存的地方都可以编译)和然后当事情进一步发展并且我知道我需要缓存的地方时,我可以在不进行侵入式代码更改的情况下添加它.

作为我正在寻找的那种解决方案的想法; 我正在使用D编程语言(但中途理智的C++会很好)我​​喜欢模板.

c++ caching design-patterns d

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

如何在XP/Vista和更新版本上为VB6创建一个简单的安装系统?

重视简单.我从未做过安装程序而且我不需要学习太多东西.我可以将一堆文件交给它的系统,它可以做出一些关于将它们放在哪里的智能猜测是理想的.

来吧回答一般问题.

但是在我的情况下,我遇到了一些额外的限制.要安装的程序是用VB6(或它是5?)和几个以前的VB版本编写的,所以它不会很快更新.我有一个正在运行的安装,并且将使用一个干净的虚拟机.所以我将做一个循环:运行安装,找到它被破坏的地方,修复它,将其添加到安装程序,还原虚拟机,再试一次.如果有人有更好的方法我会接受建议.

必须让它在XP上工作,我真的希望也能在新版本的Windows上运行.

windows vb6 installer

7
推荐指数
2
解决办法
4952
查看次数

语义合并工具

背景:在我的工作中,我们使用SVN,C#和VisualStudio.我的部分任务经常涉及全局重命名.通常,在重命名某些内容然后合并更改之后,我最终会遇到损坏的构建.

问题是:有没有可以查看我的更改的解决方案,注意全局重命名,然后将其应用于其他人在合并时进行的编辑?

另一种获得相同效果的方法是使用某种重构日志,然后将其应用于传入编辑.

该工具不一定是完美的,即使它只是注意到他们所编辑的任何引用都提到我编辑过的东西是有价值的.

编辑我知道VS的重构工具.在我重构我的工作副本之后,我正在寻找的东西将允许我将相同的重构应用于我现在需要合并的其他人编辑.

理想的解决方案是确保在进行重构时没有未完成的编辑,但这样可以防止其他人在下周或更长时间内完成任何操作.(因为他们必须在下周每半小时左右同步一次)

c# merge refactoring devtools

7
推荐指数
2
解决办法
3075
查看次数

为什么访问者负责以访客模式列举儿童?

根据我发现的代码,似乎访问者需要知道访问对象的结构并调用所需的子代.在某些情况下,即使访问类被修改,访问者仍希望继续工作,这似乎有点笨拙.

我想真正的问题是:它们是一种模式,其中枚举是由访问过的代码而不是访问者代码完成的?

design-patterns enumeration visitor-pattern

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

c#"finally"阻止只在异常上运行

编辑:我看过的答案代码:NONE他们做我想做的(我检查).似乎没有办法在本地c#中做我想要的.鉴于.NET确实支持它,我认为这不是一场灾难(见接受的答案).

谢谢大家.


我有c#代码(测试框架的一部分,除了调试器之外永远不会运行),这样就指出它可以避免实际捕获异常,因为这会使得在堆栈的展开部分调试代码成为一种巨大的痛苦.

Bool bad = true;
try
{
   MightThrow();
   bad = false;
}
finally
{
   if(bad) DoSomeLoggingOnFailure();

   //// Does not catch!!!! 
   //// exception continues to unwind stack.

   //// Note that re throwing the exception is NOT
   //// the same as not catching it in the first place
}
Run Code Online (Sandbox Code Playgroud)

他们是一个更好的方法吗?

对于未捕获的异常,解决方案必须与调试器下的行为完全相同.它必须导致唯一的第一次机会异常,并且调试器在最初抛出异常时断开,而不是在catch块中.

具体来说,我需要在未捕获的异常上调试器来阻止MightThrow.

以下操作无效,因为它无法在正确的位置调试器中断

try { ... } catch { throw; }
Run Code Online (Sandbox Code Playgroud)

这不起作用,因为它丢失了堆栈信息(并且还在错误的地方中断).

try { ... } catch(Excption e) { throw e; }
Run Code Online (Sandbox Code Playgroud)

我知道在D中我可以使用一个scope(failure) …

c# exception-handling finally

7
推荐指数
5
解决办法
7449
查看次数

ASMX用户名和密码安全性

我有一个基本的ASMX服务,我正在尝试运行(我宁愿使用WCF,但无法让服务器使用它).它在没有安全设置的情况下运行良好,但是一旦打开安全性,我就会得到:

HTTP请求未经授权,客户端身份验证方案为"匿名".从服务器收到的验证头是'Basic realm ="Secured area"'.

我想要的是一个简约的用户要求用户输入名称和密码类型的解决方案.

使用intellisense在代码周围徘徊并没有提出任何看起来像我需要的东西.

看起来可能有用但似乎是WCF所以谁知道.


我刚刚意识到我可以将它作为现场演示:

这是服务:http://smplsite.com/sandbox3/Service1.asmx

用户名是testapp,密码是testpw.我需要一个命令行应用程序来调用该服务上的函数.

因为我添加了安全性,这条线在运行Add Web Service Reference该URL 后在基本的VS项目中工作

new ServiceReference1.Service1SoapClient().HelloMom("Bob");
Run Code Online (Sandbox Code Playgroud)

这是我目前的尝试(这不起作用)

class Program
{
    private static bool customValidation(object s, X509Certificate c, X509Chain ch, SslPolicyErrors e)
    { return true }

    static void Main(string[] args)
    {
         // accept anything
        ServicePointManager.ServerCertificateValidationCallback += 
              new RemoteCertificateValidationCallback(customValidation);

        var binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
        binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
        binding.Security.Transport.Realm = "Secured area";

        // the generated Web Service Reference class …
Run Code Online (Sandbox Code Playgroud)

.net web-services login asmx

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

数字基本转换为流操作

在常量工作空间中是否有办法进行任意大小和任意基本转换.也就是说,使用1对1映射n将范围内的数字序列转换为范围内[1,m]ceiling(n*log(m)/log(p))数字序列[1,p](优选但不一定)保留lexigraphical顺序并给出顺序结果?

我对作为管道功能可行的解决方案特别感兴趣,ei能够处理比存储在RAM中更大的数据集.

我发现了许多解决方案,这些解决方案需要与输入大小成比例的"工作空间",但是没有一个可以通过恒定的"工作空间"来消除.


删除顺序约束会有什么不同吗?即:允许按字典顺序输入,以产生非按字典顺序排列的输出:

F(1,2,6,4,3,7,8) -> (5,6,3,2,1,3,5,2,4,3)
F(1,2,6,4,3,7,9) -> (5,6,3,2,1,3,5,2,4,5)
Run Code Online (Sandbox Code Playgroud)

一些想法:

这可能有用吗?

streamBase n - > convert(n,lcm(n,p)) - > convert(lcm(n,p),p) - > streamBase p

(哪里lcm是最不常见的倍数)

algorithm math complexity-theory

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

使用D进行内存分页

我正在使用D/Tango进行目录索引,是否有任何库可以帮助内存(RAM)分页内存中的字典,并且在执行索引时可以达到10gb?

memory paging d tango

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

为什么这个C++显式模板特化代码是非法的?

(注意:我知道这是非法的,我正在寻找这种语言的原因.)

template<class c> void Foo();  // Note: no generic version, here or anywhere.

int main(){
  Foo<int>();
  return 0;
}

template<> void Foo<int>();
Run Code Online (Sandbox Code Playgroud)

错误:

error: explicit specialization of 'Foo<int>' after instantiation
Run Code Online (Sandbox Code Playgroud)

谷歌的快速传递发现了这个规范的引用,但这只提供了什么,而不是原因.

编辑:

一些回复转发了这一论点(例如证实了我的推测),即规则是这样的,因为否则会违反一个定义规则(ODR).然而,这是一个非常弱的论点,因为在这种情况下,它不适用于两个原因:

  1. 将显式特化移动到另一个翻译单元可以解决问题,并且似乎没有违反ODR(或链接器说的那样).
  2. ODR的缩写形式(适用于函数)是指任何给定函数都不能有多个正文,而我不能.函数体的唯一定义位置是显式特化,因此调用Foo<int>不能定义模板的泛型特化,因为没有专用的泛型体.

关于此事的猜测:

关于为什么规则存在的猜测:如果第一行提供了一个定义(而不是一个声明),实例化后的显式特化将是一个问题,因为你会得到多个定义.但在这种情况下,唯一的定义是明确的专业化.

奇怪的是,以下(或者我正在处理的实际代码中的类似内容)有效:

文件A:

template<class c> void Foo();

int main(){
  Foo<int>();
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

档案B:

template<class c> void Foo();

template<> void Foo<int>();
Run Code Online (Sandbox Code Playgroud)

但总的来说,使用它开始创造一个意大利面条进口结构.

c++ templates language-specifications explicit-specialization

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