示例代码:
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"工作,但我想知道是否有比这更简洁的方法.即没有辅助方法,有没有办法做到这一点.
到目前为止,在这种情况下,我可能不会打扰使用构造函数链接.想法?
在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"语句并建议"转换为??表达式".但是怎么样?我错过了什么吗?
例如,如果我运行此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)的行为.
任何解决方法?
使用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).
在报告服务报告中,我使用以下表达式显示项目符号:
=ChrW(&H2022)
Run Code Online (Sandbox Code Playgroud)
这是在TextBox设置中使用Arial字体.
现在,似乎工作正常,但它有多安全?即是否可能适用于所有PC?(该应用程序是一个Web应用程序).
使用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属性的代码是否确实会引发异常?难道我做错了什么 ?
编辑:是否有任何变通方法,以便当输入文件中的列数多于预期时会引发错误?
使用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#Enum定义似乎最后允许额外的逗号(至少在VS2010中).
例如:
public enum EnumTest1
{
Abc,
Def,
}
Run Code Online (Sandbox Code Playgroud)
即在"Def"结尾处有一个逗号.只是想知道这是否被设计所允许,或者是疏忽.(这可能是个好消息,因为如果它是一个bug,可能无法保证像上面这样的代码将在未来的C#版本中编译).
使用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角色有帮助,但也希望能够调用只读取数据的存储过程.最后一种方法是为每个存储过程授予执行权限.
我正在尝试输出此图表中描述的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报告中输出这个字符.如果不能在文本中完成,我将不得不使用图像).
用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) 示例代码:
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# ×7
sql-server ×3
t-sql ×3
.net ×1
.net-4.5 ×1
filehelpers ×1
fonts ×1
generics ×1
javascript ×1
resharper ×1
split ×1
string ×1
unicode ×1