Tag: C#的

如何转换DateTime? 到DateTime

我想将一个可为空的DateTime( DateTime? )转换为DateTime ,但是出现错误: "Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)" 我曾尝试以下几点: DateTime UpdatedTime = (DateTime)_objHotelPackageOrder.UpdatedDate == null ? DateTime.Now : _objHotelPackageOrder.UpdatedDate;

(this == null)在C#中!

由于在C#4中修复了一个错误,下面的程序打印为true 。 (在LINQPad中试用) void Main() { new Derived(); } class Base { public Base(Func<string> valueMaker) { Console.WriteLine(valueMaker()); } } class Derived : Base { string CheckNull() { return "Am I null? " + (this == null); } public Derived() : base(() => CheckNull()) { } } 在VS2008的Release模式下,它会抛出一个InvalidProgramExceptionexception。 (在debugging模式下,它工作正常) 在VS2010 Beta 2中,它不能编译(我没有尝试Beta 1); 我了解到这一点很难 有没有其他的方式来使纯C#中的this == […]

对空对象使用语句

在(可能)空对象上使用using语句是否安全? 考虑下面的例子: class Test { IDisposable GetObject(string name) { // returns null if not found } void DoSomething() { using (IDisposable x = GetObject("invalid name")) { if (x != null) { // etc… } } } } 保证只有当对象不为空时才会调用Dispose ,而且我不会得到一个NullReferenceException ?

下面的程序如何在C89模式下编译时输出“C89”,编译为C99模式时如何输出“C99”?

我从网上find了这个C程序: #include <stdio.h> int main(){ printf("C%d\n",(int)(90-(-4.5//**/ -4.5))); return 0; } 这个程序的有趣之处在于,它在C89模式下编译和运行时,会打印C89 ,当它编译并运行在C99模式下时,将打印C99 。 但我无法弄清楚这个程序是如何工作的。 你能解释一下printf的第二个参数在上面的程序中是如何工作的吗?

如何在Visual Studiodebugging器中显示一个dynamic分配的数组?

如果您有一个静态分配的数组,Visual Studiodebugging器可以轻松显示所有数组元素。 但是,如果您有一个dynamic分配的数组,并且指针指向一个数组,那么当您单击+展开数组时,它将只显示该数组的第一个元素。 有没有一种简单的方法来告诉debugging器,让我看看这个数据是一个Footypes的数组,并且大小为X?

如何testingtypes是否是原始的

我有一段代码将一个types序列化为一个Html标签。 Type t = typeof(T); // I pass <T> in as a paramter, where myObj is of type T tagBuilder.Attributes.Add("class", t.Name); foreach (PropertyInfo prop in t.GetProperties()) { object propValue = prop.GetValue(myObj, null); string stringValue = propValue != null ? propValue.ToString() : String.Empty; tagBuilder.Attributes.Add(prop.Name, stringValue); } 这很好,除了我希望它只为原始types,如int , double , bool等,以及其他types不是原始的,但可以像string一样容易序列化。 我希望它忽略像列表和其他自定义types的一切。 任何人都可以build议我怎么做? 还是我需要指定我想要允许的types,并切换属性的types,看看是否允许? 这有点乱,所以如果我有一个更整洁的方式会很好。

如何在C#.NET文档中添加换行符

这应该是更容易… 我想添加一个“编码”换行符到我的代码中的XML文档 /// <summary> /// Get a human-readable variant of the SQL WHERE statement of the search element. &lt;br/&gt; /// Rather than return SQL, this method returns a string with icon-tokens, which /// could be used to represent the search in a condensed pictogram format. /// </summary> 正如你所看到的,我发现了一些答案,certificate添加<和>括号。 有趣的是,良好的'ol'换行符不会在Intellisensepopup窗口中创build换行符。 我觉得这很烦人 有什么build议么?

模仿Facebook隐藏/显示扩展/缩小导航栏

在新的iOS7的Facebook iPhone应用程序中,当用户向上滚动navigationBar栏时,会逐渐隐藏到完全消失的点。 然后当用户向下滚动navigationBar栏时,逐渐显示出来。 你将如何自己实现这个行为? 我知道下面的解决scheme,但它马上消失,它并没有绑在用户的滚动手势的速度。 [navigationController setNavigationBarHidden: YES animated:YES]; 我希望这不是一个重复,因为我不知道如何最好地描述“扩大/收缩”的行为。

为什么2048×2048与2047x2047arrays乘法相比,会有巨大的性能下降?

我正在做一些matrix乘法基准testing,正如之前为什么MATLAB在matrix乘法中如此之快? 现在我又遇到了另外一个问题,当乘以两个2048x2048matrix时,C#和其他的有很大的区别。 当我尝试只乘以2047x2047matrix时,这似乎是正常的。 还增加了一些其他的比较。 1024×1024 – 10秒。 1027×1027 – 10秒。 2047×2047 – 90秒。 2048×2048 – 300秒。 2049×2049 – 91秒。 (更新) 2500×2500 – 166秒 对于2k到2k的情况,这是三分半钟的差距。 使用2dim数组 //Array init like this int rozmer = 2048; float[,] matice = new float[rozmer, rozmer]; //Main multiply code for(int j = 0; j < rozmer; j++) { for (int k = […]

将代码分配给一个variables

是否可以创build一个variables,并为其分配一行代码,例如: ButtonClicked = (MessageBox.Show("Hello, World!")); …所以当我使用variables时,它将执行代码行。