小编dem*_*key的帖子

私有字段和私有属性之间的差异

使用私有属性而不是私有字段有什么区别

private String MyValue { get; set; }

// instead of

private String _myValue;

public void DoSomething()
{
   MyValue = "Test";

   // Instead of

   _myValue = "Test";
}
Run Code Online (Sandbox Code Playgroud)

有任何性能问题吗?或只是一个命名惯例?

.net c# properties

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

如何在运行时找到当前函数的名称?

经过多年使用丑陋的MFC ASSERT宏,我终于决定抛弃它并创建最终的ASSERT宏.

我很好地获取文件和行号,甚至是失败的表达式.我可以显示带有这些的消息框,以及中止/重试/取消按钮.

当我按下Retry时,VS调试器会跳转到包含ASSERT调用的行(而不像某些其他ASSERT函数那样反汇编).所以这一切都非常有效.

但真正酷的是显示失败的函数的名称.

然后我可以决定是否调试它而不试图从文件名中猜出它的功能.

例如,如果我有以下功能:

int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
   ASSERT(lpCreateStruct->cx > 0);
   ...
}
Run Code Online (Sandbox Code Playgroud)

然后当ASSERT触发时,消息框将显示如下内容:

Function = CMainFrame::OnCreate
Run Code Online (Sandbox Code Playgroud)

那么,在运行时找到当前函数名的最简单方法是什么?

它不应该使用MFC或.NET框架,即使我确实使用这两者.
它应该尽可能便携.

c++ assert function

36
推荐指数
6
解决办法
5万
查看次数

从Configuration Manager中删除解决方案平台

我在VS2008中有一个包含C#和C++/CLI项目的解决方案.我的解决方案中有3个"解决方案平台":

  • 任何CPU
  • Win32的
  • 混合平台

我从不想"只是构建C#"或"只是构建C++",我总是希望构建所有项目.所以解决方案平台的比喻对我来说毫无意义,我会将它留在混合平台上,或者只要它们都构建完毕.

现在VS有时会自动将当前的解决方案平台切换到任何CPU(我不知道何时或为什么).这意味着按下F7只会尝试构建C#项目,这显然是不行的.所以我必须切换回混合平台并再试一次.

那么如何解决这个恼人的问题呢?我试过两种方法:

  1. 在Configuration Manager中,删除Any CPU和Win32解决方案平台.这一直有效,直到我添加了一个新项目,Visual Studio非常友好地将它们添加回...:/
  2. 在Configuration Manager中,选中所有解决方案平台中所有配置中所有项目的所有复选框.这成为管理解决方案中许多项目的噩梦.

还有其他想法吗?

visual-studio

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

未运行TeamCity挂起的更改

我已经配置了TeamCity来执行NUnit测试.

当我手动运行它然后它工作正常.但不知何故,它会累积挂起的更改,即使我刷新TeamCity的概述页面也不会运行测试.

我想知道我必须使用哪个设置才能运行挂起的更改?

基本上我想先启动第一个挂起的更改,一旦它出现就执行.

谢谢!

在此输入图像描述

teamcity

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

"LNK2022:元数据操作失败"让我疯狂

我有很多项目的大解决方案,使用VS2008 SP1,并且每天至少遇到一次LNK2022错误.如果我对解决方案进行全面重建,它可以很好地构建,但这并不好玩.

当依赖DLL"无意义地"更改时(即不更改任何方法或类),并且稍后构建引用项目时,就会发生这种情况.合并元数据时失败 - 无论这意味着什么.

首先要注意的是共享DLL是#using从多个.CPP文件引用的.
第二件事是,如果我从共享DLL中删除AssemblyInfo.cpp,那么问题就会消失(但我不确定这是否是一个合理的修复?).

我已尽可能地将其缩小到包含2个CLR类库项目的以下解决方案(xxx项目依赖于共享):
alt text http://i42.tinypic.com/jg2vds.png

以下是每个文件的内容:

Shared.cpp:

public ref class Shared
{
};
Run Code Online (Sandbox Code Playgroud)

英寸:

#pragma once
#using "Shared.dll"
public ref class Common
{
private:
    Shared^ m_fred;
};
Run Code Online (Sandbox Code Playgroud)

xxx.cpp和xxx2.cpp:

#include "inc.h"
Run Code Online (Sandbox Code Playgroud)

要重现,首先要重建解决方案.它会建立好.
现在保存Shared.cpp并构建解决方案,它将构建正常并显示:

...
2>------ Build started: Project: xxx, Configuration: Debug Win32 ------
2>Inspecting 'd:\xxx\xxx\Debug\Shared.dll' changes ...
2>No significant changes found in 'd:\xxx\xxx\Debug\Shared.dll'.
2>xxx - 0 error(s), 0 warning(s)
========== Build: 2 succeeded, …
Run Code Online (Sandbox Code Playgroud)

linker metadata c++-cli assemblyinfo visual-studio-2008

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

在SQL Server中无需时间比较日期的最佳方法

select * from sampleTable 
where CONVERT(VARCHAR(20),DateCreated,101) 
=     CONVERT(VARCHAR(20),CAST('Feb 15 2012  7:00:00:000PM' AS DATETIME),101)
Run Code Online (Sandbox Code Playgroud)

我想没有时间比较日期

以上查询还可以吗?或者你建议其他更好的解决方案

  • 我正在使用SQL Server 2005
  • 在服务器上以UTC格式保存的日期
  • 针对此数据的用户属于不同的时区

sql sql-server datetime utc

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

警告为错误 - 不适用于Stylecop警告

我想将Stylecop警告视为错误,但它对我不起作用.

我的项目被配置为将警告视为错误,如果我使用真正的"编译器警告"构建它确实显示编译器错误.但是通过"Stylecop警告",它只显示编译器警告.

因此,当有Stylecop警告时,我向TeamCity烦恼地签到并不会破坏CI构建.

我正在使用VS2013和Stylecop 4.7.49.

我的设置:

  • 项目 - >属性 - >构建

    • 警告级别:4
    • 抑制警告:1591
    • 将警告视为错误:全部
  • 项目 - >样式设置 - >选项

    • 将违规视为错误:已检查

包含实际编译器警告的示例代码,它正确地破坏了构建:

using System;

namespace CodeUsageTest
{
    public class CodeUsage
    {
        private string fff()
        {
            int nobodyLovesMe; //CS0168
            return "";
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

构建输出:

1>------ Build started: Project: CodeUsageTest, Configuration: Debug Any CPU ------
1>D:\Sandbox\CodeUsageTest\CodeUsage.cs(9,17,9,30): error CS0168: Warning as Error: The variable 'nobodyLovesMe' is declared but never used
========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 …
Run Code Online (Sandbox Code Playgroud)

c# stylecop compiler-warnings visual-studio visual-studio-2013

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

"#define new DEBUG_NEW"和"#undef THIS_FILE"等实际上是否必要?

创建新的MFC应用程序时,向导会在几乎每个CPP文件中创建以下代码块:

#ifdef _DEBUG
#define new DEBUG_NEW
#endif
Run Code Online (Sandbox Code Playgroud)

有时候它也增加了这个:

#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
Run Code Online (Sandbox Code Playgroud)

如果它是多余的,我想从我的CPP文件中删除此代码.我在VS2008上使用带有C++/CLI的MFC应用程序.

从CPP中删除此代码后,我尝试在Debug中运行,它似乎工作正常."新"变量工作正常,没有泄漏,ASSERT对话框显示正确的文件名并跳转到违规行.

任何人都可以告诉我它的作用以及删除它是否安全?

c++ mfc c-preprocessor

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

如何将ASCII值转换为.NET中的字符

这里有一百万个关于如何将字符转换为ASCII值的帖子.
好吧,我希望完全相反.
我有一个ASCII值存储为int,我想在字符串中显示其ASCII字符表示.

即请显示代码为int转换65A.

我现在拥有的是什么 String::Format("You typed '{0}'", (char)65)

但这导致了"You typed '65'"我希望它"You typed 'A'"

我正在使用C++/CLI,但我猜任何.NET语言都会...

(后来编辑,以改善未来googlers的问题)

.net ascii integer

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

哪个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
查看次数