小编Ada*_*rth的帖子

DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")是返回AM时间而不是PM时间?

我想通过当前时间来获取 DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss")

然而,这正在吐出我们想要的12小时的时间.

例如:

吐出来的是什么: 11/14/2011 2:24:56 am

我们想要什么: 11/14/2011 2:24:56 pm

我们做了什么noob错误?

任何帮助是极大的赞赏 :)

.net datetime

68
推荐指数
2
解决办法
31万
查看次数

我可以用throw删除空捕获吗?

我希望这很简单.我在一个大的代码库上工作,总体质量很好,但偶尔你会得到一些:

try
{
   // Calls a .NET remoting method.
}
catch
{
   throw;
}
Run Code Online (Sandbox Code Playgroud)

注意,没有最终的逻辑,catch没有指定任何异常或做除了我上面提供的任何其他操作.但是,我知道捕获和重新抛出可以改变异常细节中的调用堆栈.我不确定的是,这种行为是否特别是因为.NET远程调用.

删除这个try-catch是否安全?据我所知,它是,但我想我会先检查一下所有奇怪的行为.

.net c# exception-handling .net-remoting

24
推荐指数
3
解决办法
1702
查看次数

密封关键字会影响编译器对强制转换的看法

我有一种情况,我喜欢编译器的行为解释.给出一点代码:

interface IFoo<T>
{
    T Get();
}

class FooGetter : IFoo<int>
{
    public int Get()
    {
        return 42;
    }
}
Run Code Online (Sandbox Code Playgroud)

以下编译并运行:

static class FooGetterGetter
{
    public static IFoo<T> Get<T>()
    {
        return (IFoo<T>)new FooGetter();
    }
}
Run Code Online (Sandbox Code Playgroud)

如果我们更改Foo类的签名并添加sealed关键字:

sealed class FooGetter : IFoo<int> // etc
Run Code Online (Sandbox Code Playgroud)

然后我在以下行得到编译器错误:

 return (IFoo<T>)new FooGetter();
Run Code Online (Sandbox Code Playgroud)

的:

无法将类型'MyNamespace.FooGetter'转换为'MyNamespace.IFoo <T>'

有人可以解释sealed关键字的问题吗?这是针对Visual Studio 2010中的.NET 4项目的C#4.

更新:有趣的是,当我想知道为什么以下代码在sealed应用时修复它时,我偶然发现了这部分行为:

return (IFoo<T>)(IFoo<int>)new FooGetter();
Run Code Online (Sandbox Code Playgroud)

更新:只是为了澄清,当T请求的类型T与具体类型使用的类型相同时,它都运行良好.如果类型不同,则转换在运行时失败,例如:

无法将"MyNamespace.StringFoo"类型的对象强制转换为"MyNamespace.IFoo"1 [System.Int32]'

在上面的示例中,StringFoo : IFoo<string>调用者要求获取 …

c# compiler-errors visual-studio-2010

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

调用堆栈上的条件断点

是否可以在Visual Studio 2010中指定断点,仅在调用堆栈的调用方法满足某些特定条件时才会命中?例如,很可能是方法名称.

我理想地在Visual Studio本身寻找一个解决方案,例如条件断点,但我会决定在代码中测试堆栈中的方法名称并使用编码断点.

我想要实现的是切断来自特定呼叫者的呼叫.

c# debugging visual-studio-2010 conditional-breakpoint

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

编译时常数不一致

更新:这似乎是一个编译器red-herring,因为以下实际上是有效的:

const int MyInt = default(int);
Run Code Online (Sandbox Code Playgroud)

问题在于DateTime不是有效的const,而不是使用default.

对我来说混淆的主要原因是没有意识到default(DateTime)在可选参数中专门处理(我得出了一个错误的结论,default(DateTime)由于错误消息忽略了其他可能的条件而被视为编译时常量).MarcinJuraszek在回答中解决了这个问题.


原始问题:

从Marc Gravell 对另一个问题的回答中的评论中可以看出这是无耻的.

为什么以下内容有效:

// No compiler errors, default(DateTime) seems to satisfy the compile-time constant requirement.
public static void DoSomething(DateTime date = default(DateTime))
{ 
}
Run Code Online (Sandbox Code Playgroud)

但以下不是:

// Compiler error: "Constant initializer must be compile-time constant.
const DateTime MyDate = default(DateTime); 
Run Code Online (Sandbox Code Playgroud)

因为两者似乎都想要"编译时常量"(如果你尝试提供类似于DateTime.MinValue可选参数的东西,那么编译器会抱怨它不是编译时常量):

// Compiler error: Default parameter value for 'date' must be a compile-time constant.
public static …
Run Code Online (Sandbox Code Playgroud)

c#

12
推荐指数
2
解决办法
3204
查看次数

MS-SQL何时维护表索引?

为了论证,让我们说它适用于SQL 2005/8.我知道当您在表上放置索引来调整SELECT语句时,这些索引需要在INSERT/ UPDATE/ DELETEactions 期间进行维护.

我的主要问题是:

SQL Server何时维护表的索引?

我有很多后续问题:

我天真地假设它会在命令执行后执行.假设您要插入20行,它将在插入和提交20行后维护索引.

  • 在脚本具有针对表的多个语句但其他方式是不同的语句的情况下会发生什么?

  • 服务器是否具有在执行所有语句后维护索引的智能,还是在每个语句中执行此操作?

我已经看到了在大/多INSERT/ UPDATE动作之后删除索引并重新创建的情况.

  • 即使您只更改了少量行,这可能会导致重建整个表的索引?

  • 尝试整理INSERTUPDATE操作到更大的批处理中是否会有性能优势,例如通过收集要插入临时表的行,而不是执行许多较小的插入?

  • 如何将上面的行进行整理以防止丢弃索引而不是维护命中?

抱歉问题激增 - 这是我一直都知道的事情,但在尝试调整脚本以获得平衡时,我发现我实际上并不知道索引维护何时发生.

编辑:我知道性能问题在很大程度上取决于插入/更新期间的数据量和索引数量.再次为了论证,我有两种情况:

  • 一个索引重表调整选择.
  • 索引灯表(PK).

这两种情况都有一个大的插入/更新批次,比如10k +行.

编辑2:我知道能够在数据集上分析给定的脚本.但是,分析并不能告诉我为什么给定的方法比另一种更快.我对索引背后的理论以及性能问题所依据的理论更感兴趣,而不是一个明确的"这比那个更快"的答案.

谢谢.

sql-server indexing query-performance

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

重构大型构造函数

我们在域模型中有一些对象,你可以说它们可以说是攻击性的大型构造函数,这么大,以至于IntelliSense放弃了试图向你展示它...

提示具有50个左右参数的类型,主要是值类型,一些引用类型:

public class MyLegacyType
{
    public MyLegacyType(int a1, int a2, int a3, ... int a50) // etc
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在就说,没有这种类型不能改变.类型本身在逻辑上代表一个实体,这恰好是属性重的.构造此类型的调用者提供来自多个源的大多数参数,但有些是默认的.也许有一种模式可以为建筑提供资源而不是结果.

但是,可以改变的是如何创建类型.目前,我们的代码部分受到以下影响:

  • 该类型缺乏智能感知.
  • 丑陋且难以理解的代码.
  • 合并由于位置的Connascence导致的痛苦.

一个直接的答案是利用可选参数的默认值和命名参数来帮助合并.我们在某种程度上对其他类型这样做,工作正常.

然而,感觉好像这是完全重构的一半.

另一个明显的解决方案是使用具有以前构造函数参数的属性的容器类型来减少构造函数参数.这很好地整理了构造函数,并允许您在容器中嵌入默认值,但实际上将问题移到另一个类型上,并且可能与可选/命名参数用法相同.

还有Fluent构造函数的概念......在每个属性(WithIntA,WithIntB)或容器类型(WithTheseInts(IntContainer c))的基础上.就个人而言,我喜欢这种来自呼叫方的方法,但是在大型类型上它又变得冗长,感觉好像我刚刚移动了一个问题而不是解决问题.

我的问题,如果有一个埋在这个烂摊子里的是:这些问题的可行的重构策略是什么? 请通过一些相关经验,陷阱或批评来充实任何答案.我倾向于Fluent的东西,因为我认为它看起来很酷,而且非常易读且易于合并.

我觉得好像我错过了构造函数重构的圣杯 - 所以我愿意接受建议.当然,这也可能只是一个令人遗憾和不可避免的副作用,首先是拥有这么多属性的类型......

c# refactoring c#-4.0

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

趋势1亿+行

我有一个系统,每秒记录一些测量值.存储趋势数据的最佳方法是什么,这些数据是与特定秒对应的值?

1 day = 86.400 seconds
1 month = 2.592.000 seconds
Run Code Online (Sandbox Code Playgroud)

大约1000个值来跟踪每秒.

目前,有50个表格对每个20列的趋势数据进行分组.这些表包含超过1亿行.

    TREND_TIME datetime (clustered_index)
    TREND_DATA1 real
    TREND_DATA2 real
    ...
    TREND_DATA20 real
Run Code Online (Sandbox Code Playgroud)

sql

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

如何找到我的电脑使用了多少能量?

嗨我怎样才能找到我的计算机正在使用多少能量..我可以找到使用C#.NET的能量..我看起来太多但是找不到任何想法!

.net c# electronics pc energy

6
推荐指数
0
解决办法
1142
查看次数

repaint()无法工作

我想根据从另一个线程收到的数据在我的面板上绘制一个图像.我确信数据和随后的像素数组运行良好,但repaint()永远不会工作.谁能告诉我这里出了什么问题?

import javax.swing.*;
import java.awt.*;
import java.awt.image.*;

/** Create an image from a pixel array. **/
public class PicturePlaza extends JApplet
{
  ImagePanel fImagePanel;
  ReadCom   readComPort;
  Thread readPortThread;

  public void init () {
    // initiate the read port thread so that it can receive data
     readComPort = new ReadCom();
     readPortThread = new Thread(readComPort,"ReadCom");
     readPortThread.start();

     Container content_pane = getContentPane ();
     fImagePanel = new ImagePanel ();
     content_pane.add (fImagePanel);  

  } 

  // Tell the panel to create and display the image, if pixel data …
Run Code Online (Sandbox Code Playgroud)

java applet swing awt repaint

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