小编Moe*_*sko的帖子

构造函数链接

示例代码:

public class CA
{
    public CA(string s, List<int> numList)
    {
        // do some initialization
    }

    public CA(string s, int num) : this(s, ListHelper.CreateList(num))
    {
    }
}

public static class ListHelper
{
    public static List<int> CreateList(int num)
    {
        List<int> numList = new List<int>();
        numList.Add(num);
        return numList;
    }
}
Run Code Online (Sandbox Code Playgroud)

"CA"中的第二个构造函数使用构造函数链接.在"this"调用中,我想将一个int转换为一个包含一个成员的List.代码通过辅助函数"CreateList"工作,但我想知道是否有比这更简洁的方法.即没有辅助方法,有没有办法做到这一点.

到目前为止,在这种情况下,我可能不会打扰使用构造函数链接.想法?

.net c#

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

resharper暗示"转换为??表达",但如何?

在Visual Studio 2012中使用Resharper 7.1.1.示例代码:

    private string _str;

    private string TheString
    {
        get
        {
            if (_str == null) // "X"
            {
                _str = GetString();
            }
            return _str;
        }
    }

    // do some work to get string. e.g. read from database
    private string GetString()
    {
        return "blah";
    }
Run Code Online (Sandbox Code Playgroud)

在标记为"X"的行处,resharper强调"if"语句并建议"转换为??表达式".但是怎么样?我错过了什么吗?

c# resharper visual-studio

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

拆分带限制的字符串,其中最后一个字符串包含余数

例如,如果我运行此javascript:

var str = 'hello_world_there';
var parts = str.split('_', 2);

var p1 = parts[0];
var p2 = parts[1];
Run Code Online (Sandbox Code Playgroud)

最后,p1包含"hello",p2包含"world".

我希望p1包含"hello",p2包含"world_there".即我希望p2包含字符串的其余部分,无论它有多少下划线(类似于c#的String.Split(char []分隔符,int count)的行为.

任何解决方法?

javascript string split

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

检查null varbinary(max)列的效率?

使用SQL Server 2008.

示例表:

CREATE table dbo.blobtest
(id int primary key not null,
name nvarchar(200) not null, 
data varbinary(max) null)
Run Code Online (Sandbox Code Playgroud)

示例查询:

select id, name, 
cast((case when data is null then 0 else 1 end) as bit) as DataExists 
from dbo.blobtest 
Run Code Online (Sandbox Code Playgroud)

现在,查询需要返回一个"DataExists"列,如果blob为null,则返回0,否则返回1.

这一切都很好,但我想知道它的效率如何.即,SQL服务器是否需要将整个blob读入其内存,或者是否有一些优化,以便它只进行足够的读取以确定blob是否为空?

(FWIW,对于此示例,sp_tableoption"超出行的大值类型"选项设置为OFF).

t-sql sql-server sql-server-2005 sql-server-2008

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

子弹角色(U + 2022)可以安全使用吗?

在报告服务报告中,我使用以下表达式显示项目符号:

=ChrW(&H2022)
Run Code Online (Sandbox Code Playgroud)

这是在TextBox设置中使用Arial字体.

现在,似乎工作正常,但它有多安全?即是否可能适用于所有PC?(该应用程序是一个Web应用程序).

fonts reporting-services

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

FileHelpers - 当使用FieldQuoted属性时,文件中的额外列不会引发错误

使用FileHelpers.dll版本3.0.1.0,带.net 4.0.

重现问题的代码:

像这样创建一个Accounts.txt文件:

"AccountName","ExtraColumn"
"MR GREEN ","abc"
"MR SMITH ","def"
Run Code Online (Sandbox Code Playgroud)

c#帐户类:

[IgnoreFirst(1)]
[DelimitedRecord(",")]
[IgnoreEmptyLines()]
public class Account
{
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.NotAllow)]
    public string AccountName;

}
Run Code Online (Sandbox Code Playgroud)

要阅读文件:

        string fname = @"C:\test\Accounts.txt";

        FileHelperEngine engine = new FileHelperEngine(typeof(Account));

        Account[] importNodes =  (Account[])engine.ReadFile(fname);  // XX
Run Code Online (Sandbox Code Playgroud)

现在,我原本期望在第XX行引发异常,因为文件(2)中的列比"Account"类(1)中的列多.但是,没有引发异常,并且额外的列似乎被忽略了.

如果更改Account类以删除"FieldQuoted"属性,则确实会引发异常,例如:

[FileHelpers.BadUsageException] {"行:2列:0分隔符'’最后一个字段'帐户名’后发现(该文件是错误的,或者您需要一个字段添加到记录类)"} FileHelpers.BadUsageException

谁能提供一些见解?具有FieldQuoted属性的代码是否确实会引发异常?难道我做错了什么 ?

编辑:是否有任何变通方法,以便当输入文件中的列数多于预期时会引发错误?

c# filehelpers

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

对象的可空类型

使用dotnet 2.0.以下代码可以改进风格吗?

    private object GetObj_Version1(int? num)
    {
        return num ?? (object)DBNull.Value;
    }
Run Code Online (Sandbox Code Playgroud)

演员看起来有点乱.下面的版本2避免了演员阵容,但其长篇大论:

    private object GetObj_Version2(int? num)
    {
        object numObj;
        if (num.HasValue)
            numObj = num.Value;
        else
            numObj = DBNull.Value;

        return numObj;
    }
Run Code Online (Sandbox Code Playgroud)

你能想到一个既短又避免演员的替代方案?TIA.

c#

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

枚举语法 - 结尾允许使用额外的逗号?

很惊讶地看到C#Enum定义似乎最后允许额外的逗号(至少在VS2010中).

例如:

public enum EnumTest1
{
    Abc,
    Def,
}
Run Code Online (Sandbox Code Playgroud)

即在"Def"结尾处有一个逗号.只是想知道这是否被设计所允许,或者是疏忽.(这可能是个好消息,因为如果它是一个bug,可能无法保证像上面这样的代码将在未来的C#版本中编译).

c#

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

是否有可能获得只读取数据的存储过程列表?

使用SQL Server 2012.您可以使用TSQL获取存储过程的列表,如下所示:

select * from information_schema.routines r where r.ROUTINE_TYPE = 'PROCEDURE'
Run Code Online (Sandbox Code Playgroud)

有没有办法只获取只读取数据的存储过程的子集(即不要在其中尝试INSERT或UPDATE语句,或者它们调用的任何存储过程).

我在想这个问题的答案是否定的,但是为了以防万一,只是把它放在这里.

最终目标是尝试创建一个数据库角色,该角色只能读取数据库中的数据,而不能修改它.db_datareader角色有帮助,但也希望能够调用只读取数据的存储过程.最后一种方法是为每个存储过程授予执行权限.

t-sql sql-server

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

尝试在C#中输出unicode拉丁字符(十六进制:271D)

我正在尝试输出此图表中描述的unicode拉丁字符:

http://en.wikipedia.org/wiki/List_of_Unicode_characters

所以,从winforms程序,我试过这个:

MessageBox.Show("Unicode latin cross character follows : \u271D");
Run Code Online (Sandbox Code Playgroud)

但它显示了一个小盒子形状,预计十字架.

是否有安全的方法来输出这个字符?

注意*:"安全",这意味着它可以在安装了标准Windows字体的普通PC上运行.

(我实际上想在SSRS报告中输出这个字符.如果不能在文本中完成,我将不得不使用图像).

c# unicode reporting-services

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

合并两个表,同时将一个列从一个表拖到另一个表

Sql Server 2014:

我有两个表 - 事件和位置,它们共享一个时间列,我需要按时间将它们合并到一个表中.在Events表中有一个Event列,我需要在该事件之后的所有Locations行中放置(时间方面),这是一个示例:

事件:

time   event  
------------  
09:00   2  
09:10   3  
10:15   1  
10:17   2  
10:30   3  
Run Code Online (Sandbox Code Playgroud)

位置:

time    X   Y
-------------
09:01   1   3
09:02   2   3
09:05   4   1
09:09   6   4
09:10   7   8
09:11   8   8
09:12   9   7
10:17   1   2
10:19   5   4
10:20   4   3
10:25   5   4
10:28   3   5
Run Code Online (Sandbox Code Playgroud)

合并表:

time    X   Y  event
--------------------
09:00   0   0  2
09:01   1   3  2   <
09:02   2 …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server sql-server-2014

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

检查对象是否为System.Generic.List <T>,对于任何T

示例代码:

    using System.Collections.Generic;
    ...

        // could return anything. 
        private object GetObject(int code)
        {
            object obj = null;

            if (code == 10)
            {
                var list1  = new List<Tuple<int, string>>();
                list1.Add(new Tuple<int, string>(2, "blah"));
                obj = list1;                
            }
            else if (code == 20)
            {
                obj = "hello";
            }
            else if (code == 30)
            {
                var list2 = new List<string>();
                list2.Add("o");
                obj = list2; 
            }
            // else etc, etc. 

            return obj; 
    }

    private bool DoAction(int code)
    {
        object obj = GetObject(code);

        bool isListT …
Run Code Online (Sandbox Code Playgroud)

c# generics .net-4.5

0
推荐指数
1
解决办法
3082
查看次数