鉴于以下内容,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留在未指定的状态吗?
另外,程序的调用者怎么知道这种情况呢?
var data = ...; //IList<MyClass>
var subset = data.Select(x => x.Name != null);
Run Code Online (Sandbox Code Playgroud)
我希望这会返回所有Name不为null 的对象...而是我得到一个bool值true/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所以我的处理代码没有被调用.
这似乎是非常基本的"从数据库表读取行"的东西,所以我错过了什么?我应该直接查看读者的行数据吗?
我已经看到术语"好友类"用作"如何在另一个文件中为部分类添加注释"之类的问题的"答案",但这些答案假设我知道Buddy类是什么,并且代码示例假设我理解这是如何工作的原因.
我无法看到C#中的伙伴类是什么的简单解释,以及它如何/为什么允许我修改现有类,例如向属性添加注释.
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)
这会产生编译器错误“名称属性在当前上下文中不存在”。不管我指的是Property或IThing.Property还是this.Property
为什么显式接口实现似乎会相互“屏蔽”接口方法?这是我的语言功能还是语法错误(我之前没有使用过显式接口实现,并且正在对其进行测试以查看)。
鉴于这个伪存根类:
template<class T>
MyClass
{
std::map<T,std::string> mContents;
};
Run Code Online (Sandbox Code Playgroud)
有没有办法只允许T是枚举类型?我试图了解这个问题和链接页面中讨论的内容,我是否可以使用std::enable_ifwithstd::is_enum但我无法轻松查看它是否适用于我的情况(模板专业化 enum)
这是一个非常简单的示例,但通常您在构造过程中设置了私有类字段或属性,并且希望将其提取到辅助方法中:
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 的能力的限制?
我见过人们编写自定义类来更轻松地处理各种语言的命令行选项。我想知道.NET(3.5或更低版本)是否内置任何东西,以便您不必自定义解析诸如:
myapp.exe file = text.txt
假设我有一个像" .vcproj; .csproj;*.sln "这样的字符串,我想在目录中显示这些类型的所有文件...... Windows一直使用打开文件对话框来完成此操作.
我知道Directory.GetFiles但它只允许我运行一个给定的搜索模式,所以我必须分割我的输入,然后循环每个.
在完成所有打开文件对话框后,是否没有内置功能来执行此操作?
.NET 2所以没有LINQ聪明可用!
System.IO.File.Copy 源文件具有只读属性集时失败.
复制到我收到错误:
<destination>拒绝访问该路径.(System.UnauthorizedAccessException的)
我有一个场景,我在修改它之前将模板文件复制到目标路径,为了安全起见,我宁愿模板是只读的.
为什么我不能以这种方式复制只读文件,如何才能最轻松/最明智地实现我想要的?并且... 当从未创建此文件时,为什么是目标文件的例外?
注意:复制的文件是否是只读的我不在乎,这很容易修复
c# ×8
.net ×5
sql-server ×2
.net-2.0 ×1
.net-3.5 ×1
buddy-class ×1
c++ ×1
c++11 ×1
dbconnection ×1
linq ×1
sql ×1
t-sql ×1