小编hwc*_*rwe的帖子

TFS:恢复已删除的文件夹和项目

我在TFS中删除了一些文件和一些文件夹.很多签入后来我发现我需要在我的项目中删除已删除的功能.

如何恢复已删除的文件和文件夹?

tfs tfs2008 tfs2010 tfs2012 tfs2013

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

String.Format - 它是如何工作的以及如何实现自定义格式字符串

使用String.Format()它可以以DateTime许多不同的方式格式化例如对象.每当我寻找所需的格式时,我都需要在互联网上搜索.我几乎总能找到一个可以使用的例子.例如:

String.Format("{0:MM/dd/yyyy}", DateTime.Now);          // "09/05/2012"
Run Code Online (Sandbox Code Playgroud)

但我不知道它是如何工作的以及哪些类支持这些"魔术"附加字符串.

所以我的问题是:

  1. 如何String.Format将附加信息映射MM/dd/yyyy到字符串结果?
  2. 是否所有Microsoft对象都支持此功能?
    这是在某处记录的吗?
  3. 有可能做这样的事情:
    String.Format("{0:MyCustomFormat}", new MyOwnClass())

.net c# vb.net string string-formatting

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

C#如何检测对象已被锁定

如何检测对象是否被锁定?

Monitor.TryEnter(如有没有办法检测对象是否被锁定?)对我不起作用,因为它锁定了对象(如果没有锁定).

只是想检查,如果它被锁定,其他地方在我的代码,我将使用Monitor类锁定对象.

我知道可以使用例如布尔字段(例如private bool ObjectIsLocked)但是使用锁定对象本身来检测它.

下面的示例代码显示了我想要做的事情:

private static object myLockObject = new object();

private void SampleMethod()
{
    if(myLockObject /*is not locked*/) // First check without locking it
    {
        ...
        // The object will be locked some later in the code
        if(!Monitor.TryEnter(myLockObject)) return;

        try
        {

            ....
        }
        catch(){...}
        finally
        {
            Monitor.Exit(myLockObject);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# multithreading locking .net-4.0

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

接线员'??' 不能应用于'string'和'System.DBNull'类型的操作数

我有以下C#代码:

sqlCommand.Parameters.AddWithValue("@Parameter", table.Value ?? DBNull.Value);
Run Code Online (Sandbox Code Playgroud)

但它抛出以下编译错误:

运算符??不能应用于类型string和的操作数System.DBNull

为什么编译器不允许这种语法?

.net c# dbnull operators

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

编写单元测试:如何以编程方式获取带有测试文件的文件夹

我在visual studio 2010中编写单元测试.
为了测试一些功能,我添加了一个带有testfiles的文件夹.
我需要以编程方式获取此文件夹,而不需要字符串中的硬路径.

该文件夹包含在 <projectDirectory>/TestFiles

我试过用AppDomain.CurrentDomain.BaseDirectory.这只有在我用resharper运行我的单元测试时才有效.
结果是<projectDirectory>/bin/debug这样我可以很容易地去TestFiles.

如果我使用visual studio运行测试,BaseDirectory是:
<sameFolderAsSolutionFile>\TestResults\<username>_<pcname> <datatime>\Out

我已将解决方案文件移至另一个文件夹.所以我的项目与我的解决方案文件不在同一个文件夹中.
例:
<sameFolderAsSolutionFile> = C:\SolutionFiles
<projectDirectory> = C:\Projects\MyProject

有人能告诉我如何在不使用硬编码字符串的情况下获取测试文件的路径吗?

编辑
我还没有找到解决方案.
Visual Studio正在使用另一个构建文件夹进行测试.因此,通常构建到bin文件夹中的所有内容都将构建到另一个文件夹中以进行测试.

我的TEMP-SOLUTION
我在我的测试项目中添加了一个App.config文件.在此配置文件中,我添加了一个包含测试文件所需路径的设置:

<appSettings>
  <add key="TestFiles" value="C:\Projects\MyProject\TestFiles"/>
</appSettings>
Run Code Online (Sandbox Code Playgroud)

c# directory unit-testing mstest visual-studio

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

DELETE查询非常慢

我有SQL性能问题.出于突发原因,以下查询非常缓慢:

我有两个列表,其中包含某个表的Id.如果Id已存在于第二个列表中,我需要删除第一个列表中的所有记录:

DECLARE @IdList1 TABLE(Id INT)
DECLARE @IdList2 TABLE(Id INT)

-- Approach 1
DELETE list1
FROM @IdList1 list1
INNER JOIN @IdList2 list2 ON list1.Id = list2.Id

-- Approach 2
DELETE FROM @IdList1
WHERE Id IN (SELECT Id FROM @IdList2)
Run Code Online (Sandbox Code Playgroud)

这两个列表可能包含超过10,000条记录.在这种情况下,两个查询都需要超过20秒才能执行.

执行计划也显示了一些我不理解的东西.也许这就解释了为什么它如此缓慢: 查询两个查询

我用10,000个连续的整数填充了两个列表,因此两个列表都包含值1-10.000作为起始点.

正如您所看到的,两个查询显示@ IdList2 实际行数为50.005.000 !!.@ IdList1是正确的(实际行数是10.000)

我知道还有其他解决方案如何解决这个问题.就像填写从第一个列表中删除的第三个列表一样.但我的问题是:

为什么这些删除查询这么慢,为什么我会看到这些奇怪的查询计划?

sql sql-server performance table-variable sql-execution-plan

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

使用原型JavaScript - 最佳实践

目前我正在开发一个我们正在编写面向对象的JavaScript的项目.在这个项目中,我看到了两种不同的定义类的方法:

1:在原型上一次声明函数

My.Namespace.ClassName = function(param1, param2) {
   this.member1 = param1;
   this.member2 = param2;
};

My.Namespace.ClassName.prototype = {
   myFunction1: function() {
      return this.member1 + " " + this.member2;
   },

   myFunction2: function(param1) {
      this.member3 = paraml;
   }
};
Run Code Online (Sandbox Code Playgroud)

2:准备原型上的每个功能

My.Namespace.ClassName = function(param1, param2) {
   this.member1 = param1;
   this.member2 = param2;
};

My.Namespace.ClassName.prototype.myFunction1 = function() {
   return this.member1 + " " + this.member2;
};

My.Namespace.ClassName.prototype.myFunction2 = function(param1) {
   this.member3 = paraml;
};
Run Code Online (Sandbox Code Playgroud)

基于两个给定的示例,JavaScript的行为方式有什么不同,还是仅仅是样式差异?

就个人而言,我没有看到任何行为差异,但我觉得必须有一个微妙的差异,我目前缺少.

除此之外.我想知道这是一种常见的做法,还是有更好的方法来定义类.

javascript oop prototype

9
推荐指数
1
解决办法
1502
查看次数

InvalidCastException long to ulong

我有以下方法:

public static T ExecuteScalar<T>(
    string query, 
    SqlConnection connection, 
    params SqlParameter[] parameters) where T : new()
{
    // Create SqlCommand
    SqlCommand command = CreateCommand(query, connection, parameters);

    // Execute command using ExecuteScalar
    object result = command.ExecuteScalar();

    // Return value as expected type
    if (result == null || result is DBNull) return default(T);
    return (T)result;
}
Run Code Online (Sandbox Code Playgroud)

我希望MIN_ACTIVE_ROWVERSION将数据库作为一个ulong.奇怪的是..下面的第一个方法调用生成错误,但第二个方法调用工作正常.

方法调用1生成错误:

ulong minActiveRowversion = 
    SqlUtils.ExecuteScalar<ulong>(
        "SELECT CAST(MIN_ACTIVE_ROWVERSION() AS BIGINT)"
        , _connectionString);
Run Code Online (Sandbox Code Playgroud)

错误:

System.InvalidCastException: Specified cast is not valid.
Run Code Online (Sandbox Code Playgroud)

方法调用2工作正常: …

.net c#

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

多维数组表示法(object [] []和object [,]之间的区别)

我想知道在C#中定义多维数组的两种方法有什么区别.

您可以使用object[][]object[,]处理多维数组.

有功能差异吗?

c# multidimensional-array

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

多线程:锁定属性 - 这是正确的吗?

我写了以下代码:

static readonly object failedTestLock = new object();

public static Dictionary<string, Exception> FailedTests
{
    get
    {
        lock (failedTestLock)
        {
            return _failedTests;
        }
    }
    set
    {
        lock (failedTestLock)
        {
            _failedTests = value;
        }
    }
}

public void RunTest(string testName)
{
    try
    {
        //Run a test
    }
    catch (Exception exception)
    {
        // ?? Is this correct / threadsafe?
        FailedTests.Add(testName, exception);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题:
这是否是将失败的测试安全地添加到词典中的正确方法?
这线程安全吗?
是FailedTests.Add调用INSIDE锁定还是OUTSIDE锁定?

你能解释为什么这是正确的/线程安全的,或者为什么不呢?

提前致谢

c# multithreading locking properties

3
推荐指数
2
解决办法
5888
查看次数