小编Sto*_*net的帖子

我可以在C++中从另一个构造函数(构造函数链接)调用构造函数吗?

作为C#开发人员,我习惯于运行构造函数:

class Test {
    public Test() {
        DoSomething();
    }

    public Test(int count) : this() {
        DoSomethingWithCount(count);
    }

    public Test(int count, string name) : this(count) {
        DoSomethingWithName(name);
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在C++中执行此操作?

我尝试调用类名并使用'this'关键字,但都失败了.

c++ constructor

879
推荐指数
10
解决办法
44万
查看次数

联锁和不稳定

我有一个变量,我用来表示状态.它可以从多个线程读取和写入.

我正在使用Interlocked.ExchangeInterlocked.CompareExchange改变它.但是我从多个线程中读取它.

我知道volatile可以用来确保变量不在本地缓存,但总是直接从内存中读取.

但是,如果我将变量设置为volatile,则会生成有关使用volatile并使用ref传递给Interlocked方法的警告.

我想确保每个线程都读取变量的最新值而不是某些缓存版本,但我不能使用volatile.

有一个Interlocked.Read 但是它适用于64位类型,并且在紧凑的框架上不可用.它的文档说32位类型不需要它,因为它们已经在一次操作中执行.

如果您使用Interlocked方法进行所有访问,则互联网上有一些声明您不需要使用volatile.但是,您无法使用Interlocked方法读取32位变量,因此您无法使用Interlocked方法进行所有访问.

有没有办法在不使用锁的情况下完成我的变量的线程安全读写?

.net c# mono

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

Visual Studio代码片段Cursor

在Visual Studio中插入代码段并完成插入文字时,光标会跳转到代码段的开头.

现在我想告诉visual studio之后光标应该去哪里.我在网上搜索过,实际上对这一点没什么希望.

为了说明,假设我有这个片段:

<Code Language="csharp" Kind="method body" Delimiter="$"><![CDATA[this.SyncThreadRunInvoke(() =>
            {

            });]]>
    </Code>
Run Code Online (Sandbox Code Playgroud)

插入后:

this.SyncThreadRunInvoke(() =>
            {
            []<- I want the cursor here
            });
Run Code Online (Sandbox Code Playgroud)

visual-studio code-snippets

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

try catch块中的代码重复

是否有更好的方法来捕获异常?我好像在复制很多代码.基本上在每个控制器中我都有一个catch语句来执行此操作:

try
{
     Do  something that might throw exceptions.
}
catch (exception ex)
{
     Open database connection
     Save exception details.
     If connection cannot be made to the database save exception in a text file.
}
Run Code Online (Sandbox Code Playgroud)

我在每个控制器中有4个控制器和大约5-6个动作方法,这是很多代码重复.如何减少上面try catch语句中的行数?

c# exception-handling asp.net-mvc-4

23
推荐指数
3
解决办法
2057
查看次数

为什么CultureInfo.NativeName不会大写?

出于好奇......

在我们的应用程序中,我按以下格式列出了所有可用的翻译"NativeName - EnglishName".对于某些语言,NativeName不是大写的,例如.

"Deutsch - German"
"español - Spanish"
"français - French"
"italiano - Italian"
"Nederlands - Dutch"
"polski - Polish"
Run Code Online (Sandbox Code Playgroud)

把第一个字母大写是没什么大不了的,但这背后的原因是什么?

.net multilingual cultureinfo

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

FlashWindowEx FLASHW_STOP仍然保持任务栏的颜色

我正在开发一个控制机器的应用程序.
当我从机器收到错误时,用户应该能够直接注意到它,一种方法是在任务栏上闪烁托盘.当机器清除错误时,托盘应停止闪烁.

使用FlashWindowEx函数有一点烦恼,当我清除窗口的闪烁时,它(在我的情况下是winXP)保持橙色(不闪烁).
状态样本


    [Flags]
        public enum FlashMode {
            /// 
            /// Stop flashing. The system restores the window to its original state.
            /// 
            FLASHW_STOP = 0,
            /// 
            /// Flash the window caption.
            /// 
            FLASHW_CAPTION = 1,
            /// 
            /// Flash the taskbar button.
            /// 
            FLASHW_TRAY = 2,
            /// 
            /// Flash both the window caption and taskbar button.
            /// This is equivalent to setting the FLASHW_CAPTION | FLASHW_TRAY flags.
            /// 
            FLASHW_ALL = 3,
            /// 
            /// Flash continuously, until the FLASHW_STOP flag is set. …
Run Code Online (Sandbox Code Playgroud)

c# pinvoke winapi

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

C#声音可视化

我想用C#语言和.NET Framework创建一个声音可视化系统.这可能看起来像在Winamp应用程序中.也许存在免费图书馆或一些描述如何做的有趣文章?示例: alt text http://img44.imageshack.us/img44/9982/examplel.png

.net c# audio bitmap noise

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

这是一个可通过的软件设计?

我目前正在用c ++开发游戏.因为没有垃圾收集器,所以总是要小心地删除对象,并确保一旦删除这些对象就不再被访问了.
现在随着项目的发展,一些对象可能会被越来越多的地方引用.例如,游戏中的我的单元可以从渲染器,场景层次结构,选择机制,HUD等引用.now - 如果一个对象被删除,则必须确保引用该对象的所有其他类都将被通知.
或者让我们说另一种方式 - 如果我创建一个可以引用我的单位的新类,我还必须更改单元的代码(或单元管理器或任何模块删除单元的代码,如果它得到为了确保这个新模块知道它当前引用的特定单元何时被删除.

现在我认为可以有一个简单的事件驱动的通用方法,通过创建另一个对象可以订阅的基类来解决这个问题.像这样的东西:

class DeletableBase;//forward declaration

class ISubscriber{
public:
    virtual someObjectGotDeleted(DeletableBase* deletedObject)=0;
};

class DeletableBase{
private:
    vector<ISubscriber*> subscribers;
public:
    virtual ~DeletableBase(){
        for(int i=0; i<subscribers.size(); i++)
            subscribers[i]->someObjectGotDeleted(this);
    }
    subscribeForDeleteEvent(ISubscriber* subscriber){
        subscribers.push_back(subscriber);
    }
};
Run Code Online (Sandbox Code Playgroud)

有了 - 如果我从一个新类引用从这个类继承的任何对象,我可以简单地将自己添加为订阅者,如果该对象将从任何其他地方删除,我会得到关于它的通知.

这是一种"干净"的编码方式吗?

c++ software-design

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

VB.NET是否具有与自定义访问说明符相同的C#auto属性?

我只是想知道在VB.Net中是否有一个相当于这种C#的简写,包括privatesetter:

public string Test { get; private set; }
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我在VB.Net中实现这一目标的最短路径吗?

.net c# vb.net

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

在c#中删除非常大的对象

直升机.我是c#的新手,我用GC删除了我的代码无法访问的对象.新问题是我正在使用一些大的(7-40 MB)对象,好处是我不需要一次全部,所以是否有任何可行的方法来删除对象?我试过这个:

- create big object X
- use big object X
  X = null; /*so I don't have any referance to it any more*/
  GC.Collect();
  GC.WaitForPendingFinalizers(); - create next big object ....`
Run Code Online (Sandbox Code Playgroud)

这是否保证在GC.WaitForPendingFinalizers();退出后删除大对象?

我知道我应该克服我的设计让对象变得更加强大,但是相信我,我试过它,这使逻辑变得复杂.如果没有其他方法我会这样做,代码会增加2或3倍.

谢谢!

.net c# windows

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