小编Jet*_*hro的帖子

从'System.String'到'System.TimeSpan'的无效转换

我目前有一个Generic方法,它根据键从数据库中读取一个值,并返回该值的特定类型.

    public T Get<T>(string key, T defaultValue)
    {
        var myparms = new List<SqlParameter>
                      {
                          new SqlParameter("@KEY", key),
                      };
        const string getPropertyQuery = "SELECT SPARM_VALUE FROM SYSPARAMS WHERE SPARM_KEY = @KEY;";

        var returnedValue = //Get value from Database

        if (returnedValue == null)
        {
            return defaultValue; //Value does not exists so return default.
        }

        return (T)Convert.ChangeType(returnedValue, typeof(T));
    }
Run Code Online (Sandbox Code Playgroud)

但是当我尝试返回TimeSpan类型时,我得到以下异常. Invalid cast from 'System.String' to 'System.TimeSpan'.

经过一番谷歌搜索后,我发现最常见的解决方案是使用TimeSpan.ParseTimeSpan.TryParse方法.

我还找到了TimeSpan Structure.

public struct TimeSpan : IComparable, IComparable, IEquatable, IFormattable

我的问题是为什么,为什么TimeSpan无法做到这一点.是因为它没有 …

c#

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

不保证会调用析构函数

我看到了以下引用:"不能保证将析构函数称为".这让我有点害怕

接着说,即使是try finally块也可能被中断,导致内存泄漏.它确实通过将您的代码放在CER(受约束的执行区域)或从中派生来提供解决方案CriticalFinalizerObject.

我的问题是

  1. 使用什么是tradoffs CriticalFinalizerObject,如果有的话?
  2. 他们发现的任何案件都是CriticalFinalizerObject真的有用吗?
  3. 当我开始遇到内存泄漏时,我是否应该只担心使用它?

.net c#

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

在F#中使printfn/IO纯净

似乎没有太多关于确保F#中的函数保持纯粹的在线.

要创建一个示例,有没有办法在F#中使printfn/IO纯净?

.net f# functional-programming side-effects

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

标签 统计

.net ×2

c# ×2

f# ×1

functional-programming ×1

side-effects ×1