小编dem*_*key的帖子

循环操作列表

我无法理解如何遍历Action列表.当我尝试它时,我最终得到的值与前一次迭代相同.

这是代码(简化示例):

string[] strings = { "abc", "def", "ghi" };

var actions = new List<Action>();
foreach (string str in strings)
    actions.Add(new Action(() => { Trace.WriteLine(str); }));

foreach (var action in actions)
    action();
Run Code Online (Sandbox Code Playgroud)

输出:

ghi
ghi
ghi
Run Code Online (Sandbox Code Playgroud)

为什么在strings执行操作时始终选择最终元素?
我怎样才能实现所需的输出:

abc
def
ghi
Run Code Online (Sandbox Code Playgroud)

c# action enumeration

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

哪个ResponseType应该用于PUT或POST请求的IHttpActionResult?

我已经开始IHttpActionResult使用[ResponseType]属性来装饰我的方法,目的是让消费者更容易知道如何处理响应.

这对GET来说很有意义,因为我可能想要对返回的数据做些什么.
[ResponseType]对PUT或POST请求有什么意义,它们不返回任何数据,只是成功代码?

例如

[HttpPut]
[Route("Contact/{contactId:int}/name", Name = "UpdateContactName")]
[ResponseType(typeof(?????))] // <- what should I put here? do I even need it at all?
public IHttpActionResult UpdateName(int contactId, [FromBody] string name)
{
    //...
    return StatusCode(HttpStatusCode.Accepted);
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net-web-api

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

将GNUMake与包含空格的文件名一起使用的最可靠方法是什么?

我想使用GNUMake来运行基于规则的makefile,它在目录结构中(在Windows文件系统上)构建一组C文件.

根目录,一些子目录和一些文件包含空格.

示例文件: "C:\Documents and Settings\<username>\My Documents\Test Dir\Build Me.c"

当文件路径包含空格时,GNUMake不起作用.我读过有关解决此问题的工作(从我的文件名去掉空格,使用8.3格式,替代空间的可能途径?\\等),但他们都不是完美的(或者是他们?)

有没有银弹可以解决这个问题?

顺便说一下,我坚持使用GNUMake,我不能使用不同的制作工具.

windows filenames space gnu-make

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

如何将两个图标合并在一起?(在另一个图标上叠加一个图标)

我有两个16x16 RGB/A .ICO图标文件,每个文件都加载到一个单独的System.Drawing.Icon对象中.

你将如何创建一个Icon包含两个图标合并的新对象(一个重叠在另一个上面)?


编辑:
我可能不太清楚,我不想将两个图像混合在一起,我想将一个图标叠加在另一个上面.

我应该补充说,图标已经包含透明部分,我不需要任何透明的"混合"来使两个图标都可见.我需要的是将一个图标的非透明像素覆盖在另一个图标的顶部.透明像素应该让背景图标显示出来.

例如,查看stackoverflow图标.它有一些灰色和橙色的区域,有些区域是完全透明的.想象一下,您想要在Firefox图标上叠加SO图标.你会看到SO图标的灰色和橙色是全彩色的,而SO图标是透明的,你会看到Firefox图标的那些部分.

c# merge icons overlay image

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

如何使用XmlSerializer指定XmlAttributes的顺序

XmlElement具有"Order"属性,您可以使用该属性在使用XmlSerializer进行序列化时指定属性的精确顺序(无论如何相互关联).

XmlAttribute是否有类似的东西?我只是想从类似的东西设置属性的顺序

public class bookingList
{
    [XmlElement(Order = 1)]
    public string error { get; set; }
    [XmlElement(Order = 2)]
    public int counter { get; set; }
    [XmlElement(ElementName = "booking", Order = 3)]
    public List<booking> bookings = new List<booking>();
}
Run Code Online (Sandbox Code Playgroud)

<MyType end="bob" start="joe" />
Run Code Online (Sandbox Code Playgroud)

这只是为了可读性,真的是我自己的利益.

xml serialization xml-serialization xml-attribute

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

SQL:为什么CREATE TRIGGER需要以GO开头

在创建SQL脚本以在表上创建触发器时,我想在创建之前检查触发器是否已经存在.否则脚本无法多次运行.

所以我添加了一个语句来首先检查触发器是否存在.添加该语句后,CREATE TRIGGER语句不再起作用.

IF NOT EXISTS (SELECT name FROM sysobjects
               WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
    CREATE TRIGGER tr_MyTable1_INSERT
        ON MyTable1
        AFTER INSERT
    AS
    BEGIN
        ...
    END
END
GO
Run Code Online (Sandbox Code Playgroud)

这给出了:

Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
Run Code Online (Sandbox Code Playgroud)

解决方案是删除现有触发器,然后创建新触发器:

IF EXISTS (SELECT name FROM sysobjects
           WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
    DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
    ON MyTable1
    AFTER INSERT
AS
BEGIN
    ...
END
GO
Run Code Online (Sandbox Code Playgroud)

我的问题是:为什么第一个例子失败了?检查触发器有什么问题?

sql sql-server triggers

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

每次打开Visual Studio时登录信息都会失败

每次打开Visual Studio 2013/2015(高级版)时都会收到此信息:

TF400813:资源不可用于匿名访问.需要客户端验证.

我可以简单地租用我的凭证,一切正常.但为什么我每次都必须这样做?

msdn visual-studio-2013 visual-studio-2015

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

Visual Studio 2008中的外部编辑器

有没有办法为VS2008设置外部编辑器集成?

我的意思是当我在解决方案资源管理器中双击.CPP文件时,它应该在外部编辑器中打开,而不是在内部VS中打开.

为了简单起见,我想要它在Notepad ++中打开文件(或者如何使记事本更简单).

editor external visual-studio-2008 visual-studio

6
推荐指数
1
解决办法
3678
查看次数

将*interface*或*object*作为参数传递给函数会更好吗?

我试图说服一位同事,一个函数应该将接口作为参数,而不是对象本身.我认为小对象可以很好地传递,但对于大对象,我会给它们一个接口,只是通过i/f,而不是整个事情.

请注意,只会出现其中一个大类 - i/f永远不会用于其他对象.这仅仅是为了隐藏对象的实现.

你是否同意将大型课程分成界面是一种好习惯?
这样做有什么不利之处吗?

例:

public interface class IVeryLargeClass
{
    void DoSomething();
    ...
};

public ref class VeryLargeClass : public IVeryLargeClass
{
public:
    virtual void DoSomething() { ... }
    ...
};

public ref class AnotherClass
{
public:
    AnotherClass(VeryLargeClass^ vlc)  { vlc->DoSomething(); }
 // OR
    AnotherClass(IVeryLargeClass^ vlc) { vlc->DoSomething(); }
};
Run Code Online (Sandbox Code Playgroud)

language-agnostic oop parameters information-hiding interface

6
推荐指数
2
解决办法
1447
查看次数

MFC 选项卡式文档 - 如何启用鼠标中键来关闭文档?

如果创建新的 MFC 应用程序(带有 MFC 功能包)并使用所有默认值,请单击“完成”。它使用新的“选项卡式文档”样式创建 MDI 应用程序。

替代文本

我认为这些都很棒,但令我烦恼的是我无法通过中键单击选项卡来关闭选项卡式文档窗口。

这在 Firefox、IE、Chrome 以及更重要的VS2008中都是可能的。但是单击选项卡上的中间按钮不会执行任何操作。

我不知道如何覆盖选项卡栏以允许我处理消息ON_WM_MBUTTONDOWN。有任何想法吗?

编辑:猜测我需要对从 CMDIFrameWndEx::GetMDITabs 返回的 CMFCTabCtrl 进行子类化...

mfc tabbed-document-interface mfc-feature-pack

6
推荐指数
1
解决办法
3085
查看次数