小编Mr.*_*Boy的帖子

没有返回行时SELECT INTO输出参数?

鉴于以下内容,ID主键在哪里,

CREATE PROCEDURE Test
 @ID INT,
 @RetVal INT OUT
AS BEGIN
 Select @RetVal = Column1 FROM Table1 WHERE ID = @ID;
END
Run Code Online (Sandbox Code Playgroud)

如果指定的主键(ID)不存在行会发生什么?我会失败或将@RetVal留在未指定的状态吗?

另外,程序的调用者怎么知道这种情况呢?

t-sql sql-server stored-procedures

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

选择返回true/false值的集合,而不是匹配条件的对象列表

var data = ...; //IList<MyClass>
var subset = data.Select(x => x.Name != null);
Run Code Online (Sandbox Code Playgroud)

我希望这会返回所有Name不为null 的对象...而是我得到一个bool值true/false的列表,指示原始列表中的该项是否与测试匹配.

这是正常的吗?

在此输入图像描述

.net c# linq

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

DBReader有行但Read()返回false

using (var conn = new SqlConnection(connectionString))
{
    var cmd = new SqlCommand("SELECT * FROM mySchema.MyTable", conn);
    conn.Open();
    var reader = cmd.ExecuteReader();
    while(reader.Read())
    {...
Run Code Online (Sandbox Code Playgroud)

在调试器中,我可以看到我的阅读器有一行 - 我可以看到返回的数据 - 但是reader.Read正在返回,false所以我的处理代码没有被调用.

这似乎是非常基本的"从数据库表读取行"的东西,所以我错过了什么?我应该直接查看读者的行数据吗?

.net c# sql sql-server dbconnection

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

什么是好友类,我如何使用它来为现有类添加注释?

我已经看到术语"好友类"用作"如何在另一个文件中为部分类添加注释"之类的问题的"答案",但这些答案假设我知道Buddy类什么,并且代码示例假设我理解这是如何工作的原因.

我无法看到C#中的伙伴类是什么的简单解释,以及它如何/为什么允许我修改现有类,例如向属性添加注释.

.net c# buddy-class data-annotations

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

为什么显式接口方法实现看不到其他接口方法?

interface IThing
{
 int Property {get;}
 void Method();
}

class Thing : IThing
{
 int IThing.Property {get; } = 999;
 void IThing.Method() {Console.WriteLine($"Property = {Property}");}
}
Run Code Online (Sandbox Code Playgroud)

这会产生编译器错误“名称属性在当前上下文中不存在”。不管我指的是PropertyIThing.Property还是this.Property

为什么显式接口实现似乎会相互“屏蔽”接口方法?这是我的语言功能还是语法错误(我之前没有使用过显式接口实现,并且正在对其进行测试以查看)。

c#

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

只接受枚举类型参数的模板类?

鉴于这个伪存根类:

template<class T>
MyClass
{
 std::map<T,std::string> mContents;
};
Run Code Online (Sandbox Code Playgroud)

有没有办法只允许T是枚举类型?我试图了解这个问题和链接页面中讨论的内容,我是否可以使用std::enable_ifwithstd::is_enum但我无法轻松查看它是否适用于我的情况(模板专业化 enum

c++ c++11

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

如何避免构造期间填充的私有字段“可能为空”的编译器错误

这是一个非常简单的示例,但通常您在构造过程中设置了私有类字段或属性,并且希望将其提取到辅助方法中:

class MyClass
{
 private List<int> _list;

 public MyClass()
 {
  PopulateList();
 }

 private void PopulateList()
 {
  _list = new(){1,2,3};
 }
}
Run Code Online (Sandbox Code Playgroud)

由于_list在单独的方法中而不是在构造函数中填充,因此编译器会发出警告“CS8618 - 退出构造函数时不可为空的变量必须包含非空值。请考虑将其声明为可为空。”

这是正确的,但作为开发人员,我知道该字段不会为空。我不想让它可以为空来安抚编译器,或者一般禁用 NRT 和空检查,并且我不想将 的内容移动PopulateList到 ctor 中,因为它会变得混乱。

除了禁用警告 ( #pragma warning disable CS8618) 之外,C# 是否提供任何方法来通知编译器“没问题”?或者我们是否只需解决编译器检查 null 的能力的限制?

c# nullable-reference-types

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

在C#中解析命令行选项

我见过人们编写自定义类来更轻松地处理各种语言的命令行选项。我想知道.NET(3.5或更低版本)是否内置任何东西,以便您不必自定义解析诸如:

myapp.exe file = text.txt

c# .net-3.5 command-line-arguments command-line-parsing

0
推荐指数
2
解决办法
9321
查看次数

在目录中搜索.NET中几种类型的所有文件

假设我有一个像" .vcproj; .csproj;*.sln "这样的字符串,我想在目录中显示这些类型的所有文件...... Windows一直使用打开文件对话框来完成此操作.

我知道Directory.GetFiles但它只允许我运行一个给定的搜索模式,所以我必须分割我的输入,然后循环每个.

在完成所有打开文件对话框后,是否没有内置功能来执行此操作?

.NET 2所以没有LINQ聪明可用!

.net c# .net-2.0

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

如何复制只读文件?

System.IO.File.Copy 源文件具有只读属性集时失败.

复制到我收到错误:

<destination>拒绝访问该路径.(System.UnauthorizedAccessException的)

我有一个场景,我在修改它之前将模板文件复制到目标路径,为了安全起见,我宁愿模板是只读的.

为什么我不能以这种方式复制只读文件,如何才能最轻松/最明智地实现我想要的?并且... 当从未创建此文件时,为什么是目标文件的例外?

注意:复制的文件是否是只读的我不在乎,这很容易修复

.net c#

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