小编ili*_*rit的帖子

什么应该包含在C#编程标准中?

我的任务是编写我们部门的C#编程标准(包括指南).我应该包括哪些标准/指南?我已经从网络上的各种标准中获取了一些内容(以及Code Complete中的各个部分),但我希望听到该领域的开发人员的意见.

我已经有了:命名约定 - 通用/变量/类/方法/接口/控件

一般编程实践 - 文档(评论等),[WIP]

面向对象编程实践 - 封装,[WIP]

还有什么有用的?我不应该包括什么?

c# coding-style

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

NHibernate QueryOver连接多个表的语法

如何使用QueryOver重写此SQL?我不确定QueryOver的连接优先级和解决方案是如何工作的.

SELECT DISTINCT T1.*
FROM T1
LEFT JOIN T2
   JOIN T3
   ON T2.T3Key = T3.PrimaryKey
ON T1.PrimaryKey = T2.T1Key
LEFT JOIN T4
   JOIN T5
   ON T4.T5Key = T5.PrimaryKey
ON T1.PrimaryKey = T4.T1Key
WHERE T3.Criteria = @Criteria
OR T5.Criteria = @Criteria
Run Code Online (Sandbox Code Playgroud)

http://www.sqlfiddle.com/#!3/affd13/5

nhibernate join queryover

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

支持OleDb和存储过程的优秀.NET ORM框架?

我们系统中的典型存储过程接受大约20个左右的参数.也没有机会重构这些存储过程.我基本上已经编写了自己的代码生成器,将这些SP包装到(数据库提供程序不可知)"Command"对象中,其公共属性对应于SP参数.它有效,但我更喜欢第三方经过试验和测试的解决方案.

谁能推荐任何东西?我还没有找到支持OleDB和存储过程的程序.

编辑:我需要OleDb连接,因为SQL 6.5(信不信由你).ADO.NET无法连接到SQL 6.5.此外,这是一个.NET 2.0应用程序,所以LinqToSql对我没用.

Edit2:我已经尝试过nHibernate和iBatis.它们都不符合我的需要.我最后一次尝试nHibernate时,它要求SP返回一个结果集.我的SP不是这种情况.它们都需要我手动指定参数.

.net oledb orm

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

检查浮点变量是否为整数的最可靠方法是什么?

我可以想到几种方法,例如.

Convert.ToInt32(floatingPoint) - floatingPoint == 0;
Math.Truncate(floatingPoint) - floatingPoint == 0;
floatingPoint % 1 == 0;
Math.Floor(floatingPoint) == floatingPoint;
//etc...
Run Code Online (Sandbox Code Playgroud)

但哪种方法最可靠?

c# floating-point isinteger

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

使用C#从数据库中读取图像?

我有这个问题:

SELECT PICTURE FROM LOGO WHERE LOGONO = ?
Run Code Online (Sandbox Code Playgroud)

("PICTURE"是SQL Server中的Image列)

而这段代码用于读取数据:

using (DbDataReader reader = command.ExecuteReader())
{
    if (reader.HasRows)
    {
        if (!reader.IsDBNull(0))
        {
            byte[] buffer = new byte[8000];
            while (reader.GetBytes(0, 0, buffer, 0, 8000) > 0)
                picture.AddRange(buffer);
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

问题是当列包含null时,始终会在reader.IsDBNull(0)语句上抛出InvalidOperationException("行/列不存在数据").

MSDN说:

在调用类型化的get方法(例如,GetByte,GetChar等)之前调用此方法以查看是否存在空列值,以避免引发错误.

如何在不触发异常的情况下检查列是否包含null?我是以错误的方式解决这个问题吗?

c# blob image

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

使用C#访问命令行

我需要从C#应用程序中访问命令行.如果我使用"args"参数,我找不到检测不匹配的双引号的方法.

我正在处理的应用程序可以选择加密通过命令行传递给它的字符串.

例如.

program.exe -encrypt somestring
Run Code Online (Sandbox Code Playgroud)

结果是:

EZs/6rWxvJ82+VE8unJ0Xw==
Run Code Online (Sandbox Code Playgroud)

现在,如果用户输入:

program.exe -encrypt somestring extra characters
Run Code Online (Sandbox Code Playgroud)

它会忽略"somestring"之后的所有内容(您仍然可以通过"args"参数访问其余值).

您可以使用双引号轻松解决此问题:

program.exe -encrypt "somestring extra characters"
Run Code Online (Sandbox Code Playgroud)

当然,如果您想使用嵌入式引号,可以使用"\"来转义它们:

program.exe -encrypt "somestring \"extra\" characters"
Run Code Online (Sandbox Code Playgroud)

当用户输入如下内容时会发生此问题:

program.exe -encrypt "somestring extra characters
Run Code Online (Sandbox Code Playgroud)

要么:

program.exe -encrypt somestring ex"tra characters
Run Code Online (Sandbox Code Playgroud)

该程序将完全忽略双引号,这不是用户期望的.我想检测这样的情况并告知用户不匹配/未转义的报价,否则他们可能最终得到错误字符串的加密版本.

c# command-line

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

为什么Redux使用开关而不是利用多态行为?

我是Redux的新手,立刻引起我注意的是Reducers打开了类型.

以下是Vanilla Counter示例的摘录:

function counter(state, action) {
    if (typeof state === 'undefined') {
      return 0
    }
    switch (action.type) {
      case 'INCREMENT':
        return state + 1
      case 'DECREMENT':
        return state - 1
      default:
        return state
    }
  }

  // details omitted

  document.getElementById('increment')
    .addEventListener('click', function () {
      store.dispatch({ type: 'INCREMENT' })
    })
  document.getElementById('decrement')
    .addEventListener('click', function () {
      store.dispatch({ type: 'DECREMENT' })
    })
Run Code Online (Sandbox Code Playgroud)

为什么不使用这样的东西呢?

  function increment(state) { return state + 1; }
  function decrement(state) { return state - 1; }

  function counter(state, …
Run Code Online (Sandbox Code Playgroud)

javascript redux

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

Nim 是否支持具有不可变字段的类型?

在 C# 中你可以这样做

public class Foo
{
    public string Name { get; private set; }

    public Foo(string name)
    {
        Name = name;
    }
}

public static void Main()
{
    var foo = new Foo("Foo Object");

    Console.WriteLine(foo.Name);

    // Will not compile
    // foo.Name = "Bar Object";
}
Run Code Online (Sandbox Code Playgroud)

你能在 Nim 中做同样的事情(或具有预期效果的事情)吗?

immutability nim-lang

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