在实现方面,我应该如何选择基本类型或接口?我尝试了几个例子,但我没有得到完整的想法:(
关于如何以及为什么的例子将受到高度赞赏..
我有一个有2个日期属性的类:FirstDay和LastDay. LastDay是可以为空的.我想以格式生成一个字符串"x year(s) y day(s)".如果总年数小于1,我想省略年份部分.如果总天数小于1,我想省略日期部分.如果年份或天数为0,则应分别说"天/年",而不是"天/年".
示例:
2.2年:"2年73天"
1.002738年:"1年1
天"0.
2年:" 73天" 2年:"2年"
我有什么作品,但它很长:
private const decimal DaysInAYear = 365.242M;
public string LengthInYearsAndDays
{
get
{
var lastDay = this.LastDay ?? DateTime.Today;
var lengthValue = lastDay - this.FirstDay;
var builder = new StringBuilder();
var totalDays = (decimal)lengthValue.TotalDays;
var totalYears = totalDays / DaysInAYear;
var years = (int)Math.Floor(totalYears);
totalDays -= (years * DaysInAYear);
var days = (int)Math.Floor(totalDays);
Func<int, string> sIfPlural = value =>
value > …Run Code Online (Sandbox Code Playgroud) 我有一个Web请求,正在发送格式的服务器数据application/x-www-form-urlencoded.我想把它转换成application/json.
例:
URL编码的表单数据:
Property1=A&Property2=B&Property3%5B0%5D%5BSubProperty1%5D=a&Property3%5B0%5D%5BSubProperty2%5D=b&Property3%5B1%5D%5BSubProperty1%5D=c&Property3%5B1%5D%5BSubProperty2%5D=d
Run Code Online (Sandbox Code Playgroud)
漂亮版本:
Property1=A
Property2=B
Property3[0][SubProperty1]=a
Property3[0][SubProperty2]=b
Property3[1][SubProperty1]=c
Property3[1][SubProperty2]=d
Run Code Online (Sandbox Code Playgroud)
以上数据需要转换为以下JSON数据:
{
Property1: "A",
Property2: "B",
Property3: [
{ SubProperty1: "a", SubProperty2: "b" },
{ SubProperty1: "c", SubProperty2: "d" }]
}
Run Code Online (Sandbox Code Playgroud)
题:
有没有能够做到这一点的免费工具?我一直无法找到自己,如果它们存在,我宁愿消耗它们,也不愿自己写一个,但如果是这样,我会的.
AC#/ .Net解决方案是首选.
脚本
将字符串解析为可以为null的数字类型.如果解析不成功,则结果应为null; 否则结果应该是解析的值.
题
为了实现这一点,我总是使用以下简单但冗长的烦人方法:
string numericString = "...";
decimal? numericValue;
decimal temp;
if (decimal.TryParse(numericString, out temp))
{
numericValue = temp;
}
else
{
numericValue = null;
}
Run Code Online (Sandbox Code Playgroud)
我使用上面的方法,因为以下不编译:
decimal temp;
decimal? numericValue = decimal.TryParse(numericString, out temp) ? temp : null;
Run Code Online (Sandbox Code Playgroud)
有没有人知道第一位代码的版本与第二位一样短,整齐,可读?我知道我总是可以写一个封装第一段代码的扩展方法,但我想知道是否有任何方法可以在没有扩展方法的情况下做我想做的事情.
假设我有一个班级MyType:
sealed class MyType
{
static Type typeReference = typeof(MyType);
//...
}
Run Code Online (Sandbox Code Playgroud)
给出以下代码:
var instance = new MyType();
var type1 = instance.GetType();
var type2 = typeof(MyType);
var type3 = typeReference;
Run Code Online (Sandbox Code Playgroud)
哪些变量分配最有效?
GetType()或typeof()的性能是否足以在静态字段中保存类型是有益的?
场景:
应用程序实例化实现的类的单个实例IDisposable.该实例通过静态成员公开,使其可供应用程序的所有部分访问.单个实例需要在应用程序的生命周期内保持活动状态.
题
Dispose在应用程序关闭并且进程终止之前调用该方法有多重要?
我一直认为,在大多数这种情况下,没有必要打电话,Dispose因为过程的终止自然会清理资源.我错了吗?
场景:
每次在表格中插入/更新/删除数据时,最多需要做3件事:
Table1.Name也应更新Table2.Name为相同值时)不得更改数据库的体系结构和模式,并且必须使用触发器来完成要求.
题
哪个选项更好?:
D_TableName("D"表示删除).每个操作的多个触发器被关注隔离.它们可以命名为:
D_TableName_Logging - 用于删除某些内容时的日志记录 D_TableName_RID_TableName_BL我更喜欢选项2,因为单个代码单元只有一个问题.我不是DBA,对SQL Server足够了解让我变得危险.
是否有任何令人信服的理由来处理单个触发器中的所有问题?
设想:
我正在将一个字符串插入一个二进制字段 (CONTEXT_INFO),然后尝试将其拉出并将其转换回字符串。当我这样做时,结果字符串的长度为 128,因为它有尾随空字符。
例子:
DECLARE @string VARCHAR(128)
DECLARE @binary VARBINARY(128)
SET @string = 'abcdefg'
SET @binary = CONVERT(VARBINARY(128), @string) --0x61626364656667000000...
SET CONTEXT_INFO @binary
SET @binary = CONTEXT_INFO()
-- I would like to change the following line so it trims trailing null chars
SET @string = CONVERT(VARCHAR(128), @binary)
SELECT
@binary AS [binary],
DATALENGTH(@binary) AS [binary.Length], --128 as expected
@string AS [string],
DATALENGTH(@string) AS [string.Length] --This is 128, but I need it to be 7
Run Code Online (Sandbox Code Playgroud)
题:
将二进制字段转换为字符串时,如何修剪尾随的空字符?
我有一个列表视图,在其中一列(不是第一列)中我想显示错误代码.
我无法做的是显示工具提示.我有
this.lstList.ShowItemToolTips = true;
...
ListViewItem value = lstList.Items.Add(name, name, 0);
...
if (lstList.Columns.Contains(lstColErrorCode))
{
value.SubItems.Add(new ListViewItem.ListViewSubItem(value, errorCode.ToString()));
value.ToolTipText = errorCode.ToString("X");
}
Run Code Online (Sandbox Code Playgroud)
我想获得代码的十六进制值,以显示在十进制值上方的工具提示中,但它显示在名称上方.
我无法得到任何我尝试过的东西(比如试图获得子项的坐标).我将不胜感激任何建议.
我只想使用javascript将'autobuffer'属性添加到我的视频标签中.
基本上:
var video = document.createElement('video');
video.addAttribute('autoBuffer');
Run Code Online (Sandbox Code Playgroud)
而且我会:
<video autoBuffer></video>
Run Code Online (Sandbox Code Playgroud)
我试过了:
video.setAttribute('autoBuffer'); => <video autoBuffer="undefined"></video>
Run Code Online (Sandbox Code Playgroud)
哪个错了......
该Nullable<T>类型定义为一个struct.在.Net中,您无法分配null给struct因为structs是无法表示的值类型null(除了Nullable<T>).
int i = null; // won't compile - we all know this
int? i = null; // will compile, and I'm glad it does, and it should compile, but why?
Run Code Online (Sandbox Code Playgroud)
如何Nullable<T>成为规则的例外"您不能分配null给值类型?" 反编译的代码Nullable<T>没有提供关于如何发生这种情况的见解.
我正在开发C#/ .NET 3.5应用程序(并希望继续使用该版本的.NET),并且无法使用Reflection来解决如何解决此问题.我找到了解决方法,但不是"整洁".代码如下,我需要发现所有接口实现,以便将来在添加更多接口实现时,我不需要更改现有代码.
interface Ii { }
class A : Ii { }
class A1 : A { }
class A2 : A { }
class A3 : A { }
class B : Ii { }
class C : Ii{ }
// maybe in future class D : Ii { }
// maybe in future class E : Ii { }
class Helper
{
static List<Type> GetAllInterfaceImplemenations()
{// do reflection magic and return ["A1","A2","A3","B","C"] ...
// I will use …Run Code Online (Sandbox Code Playgroud) c# ×8
.net ×7
.net-4.5 ×2
sql ×2
sql-server ×2
asp.net ×1
base ×1
c#-3.0 ×1
clr ×1
formatting ×1
forms ×1
html5 ×1
interface ×1
javascript ×1
json ×1
listview ×1
null ×1
nullable ×1
reflection ×1
runtime-type ×1
subitem ×1
timespan ×1
tooltip ×1
triggers ×1
winforms ×1