小编Jam*_*are的帖子

全局const字符串并且闻起来对我不好,它真的安全吗?

我正在审查一个同事的代码,我发现他在全球范围内定义了几个常量:

const string& SomeConstant = "This is some constant text";
Run Code Online (Sandbox Code Playgroud)

就个人而言,这对我来说闻起来很糟糕,因为引用是指我假设的是一个从给定的char数组构造的"匿名"对象.

从语法上讲,它是合法的(至少在VC++ 7中),它似乎运行,但实际上我宁愿让他删除&因此对它正在做什么没有歧义.

那么,这真的很安全合法吗?我很着迷吗?构造的临时对象是否具有保证的寿命?我一直认为以这种方式使用的匿名对象在使用后被破坏了......


所以我的问题也可以推广到匿名对象的生命周期.标准是否规定了匿名对象的生命周期?它是否与同一范围内的任何其他对象具有相同的生命周期?或者只给出表达式的生命周期?


此外,当它作为本地时,它显然有不同的范围:

class A
{
    string _str;

public:
    A(const string& str) :
        _str(str)
    {
        cout << "Constructing A(" << _str << ")" << endl;
    }

    ~A()
    {
        cout << "Destructing A(" << _str << ")" << endl;
    }
};

void TestFun()
{
    A("Outer");
    cout << "Hi" << endl;
}
Run Code Online (Sandbox Code Playgroud)

显示:

构建A(外部); 破坏A(外); 你好

c++ string anonymous const object

11
推荐指数
3
解决办法
1827
查看次数

如何使用ASMX Web服务中的WS-Security和Access UsernameToken?

好的,我们有一个目前在.NET 3.5中运行的传统ASMX Web服务,我们正在使用Visual Studio 2008.

问题是,我们需要添加身份验证,并希望利用WS-Security模型,而不会破坏任何不需要当前身份验证的现有内部客户端.

我们已经考虑过添加自定义标头,但这不是WS-Security-ish.升级到WCF虽然是长期目标,但短期内不可行.

有没有办法间接访问VS2008 ASMX Web服务的soap标头中的UsernameToken(假设它是由客户端传递的)?

c# ws-security web-services asmx usernametoken

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

需要一个C#程序集来松散地引用一个强命名的程序集

所以这就是问题所在.我正在写一些StyleCop插件组件,供我工作的公司使用.因此,这些程序集需要引用Microsoft.StyleCop.CSharp.dll,例如强名称.

问题在于,如果我构建它并将其传递给我的组中的开发人员,则它们必须具有相同版本的StyleCop dll(当前为4.3.3.0)或者无法加载.

使我的附加规则DLL更独立的最佳方法是什么?我应该在GAC中安装我的4.3.3.0版本的那些从属StyleCop dll吗?程序集(与应用程序)可以使用策略文件吗?

哦,其中一个主要问题是我希望它可以与客户安装的任何版本的StyleCop(或至少4.3.3.0或更高版本)一起使用.

提前谢谢了.

c# versioning assemblies class-library stylecop

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

构建只读空列表的最佳方法是什么?

我正在我的系统中创建一个"事件"的不可变表示,因此对于在构造函数中传递的所有者列表,我想对它们进行只读视图.此外,如果他们传入null列表,我想在这种情况下制作一个只读的空列表.

现在,由于Collections.unmodifiableList在梁木null,我现在有这样的:

userOwners_ = Collections.unmodifiableList(userOwners != null 
                                           ? userOwners 
                                           : new ArrayList<String>(0));
Run Code Online (Sandbox Code Playgroud)

但这似乎有点丑陋和低效.在Java中有更优雅的方法吗?

java java-6

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