这是一个简单的控制台应用程序代码,它返回一个我完全不理解的结果.
试着想一想它是否在控制台中输出0,1或2:
using System;
namespace ConsoleApplication
{
class Program
{
static void Main()
{
int i = 0;
i += Increment(ref i);
Console.WriteLine(i);
Console.ReadLine();
}
static private int Increment(ref int i)
{
return i++;
}
}
}
Run Code Online (Sandbox Code Playgroud)
答案是0.
我不明白的是为什么i++从Increment方法上执行的post增量ref(不是在传递的变量的副本上)确实增加了变量,但它稍后会被忽略.
我的意思是在这个视频中:
有人可以解释这个例子以及为什么在调试期间我看到该值增加到1,但它又回到0?
是否可以在开头执行没有'EXEC'或'EXECUTE'字样的存储过程?
通常我执行存储过程
EXEC DeleteProfile 'Joe Smith'
Run Code Online (Sandbox Code Playgroud)
但是,我注意到下一个命令也可以运行:
DeleteProfile 'Joe Smith'
Run Code Online (Sandbox Code Playgroud)
我为什么要写'EXEC'或'EXECUTE'字样?
可以不在存储过程名称之前写入它来执行存储过程吗?
谢谢.
有人可以解释为什么下面的代码的结果将是"B类:: 1"?
为什么派生类的虚方法使用基类的默认参数而不是自己的默认参数?对我来说这很奇怪.提前致谢!
码:
#include <iostream>
using namespace std;
class A
{
public:
virtual void func(int a = 1)
{
cout << "class A::" << a;
}
};
class B : public A
{
public:
virtual void func(int a = 2)
{
cout << "class B::" << a;
}
};
int main()
{
A * a = new B;
a->func();
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我对多重查询有一点问题.(RDBMS:访问)
以下是数据库模式:(此查询中仅使用S_Cards,Books,Authors,Students表)S_Cards是学生书籍订单(在库中).

查询:选择学生中最受欢迎的作者以及在图书馆中订购的作者书籍的编号.
虽然我可以在一个查询中获得这样的订单列表+这样的作者:
SELECT
Students.FirstName & " " & Students.LastName AS [Student],
Books.Name AS [Book], Authors.FirstName & " " & Authors.LastName AS [Author]
FROM
Students,
Books,
S_Cards,
Authors
WHERE
S_Cards.ID_Student = Students.ID
AND S_Cards.ID_Book = Books.ID
AND Books.ID_Author = Authors.ID
ORDER BY Authors.LastName
Run Code Online (Sandbox Code Playgroud)
结果(对不起,用俄语):

我无法弄清楚,为什么我不能这样COUNT和GROUP BY:
SELECT
Students.FirstName & " " & Students.LastName AS [Student],
Books.Name AS [Book],
COUNT(Authors.FirstName & " " & Authors.LastName) AS [Number of books]
FROM Students, Books, S_Cards, Authors
WHERE
S_Cards.ID_Student = Students.ID
AND S_Cards.ID_Book …Run Code Online (Sandbox Code Playgroud) 假设我有枚举,底层类型是字节:
enum EmpType : byte
{
Manager = 1,
Worker = 2,
}
Run Code Online (Sandbox Code Playgroud)
我可以将一些int文字转换为此枚举的基础类型(在本例中为byte)吗?
这样的东西不起作用(错误:";预期"):
byte x = (Enum.GetUnderlyingType(typeof(EmpType)))15;
Run Code Online (Sandbox Code Playgroud)
我可以在不明确写入(byte)15的情况下转换为基础类型吗?
谢谢.
如何在网站上的所有JavaScript源中搜索某些包含空格的文本?我知道我应该使用"CTRL + SHIFT + F"(在Windows上),但谷歌Chrome开发者工具不是搜索整个句子,而是搜索由空格分隔的每个单词.如何准确找到我在搜索框中输入的内容?
请看截图:

这是Chrome版"33.0.1750.117"中的错误吗?以前工作正常......有解决方法吗?
是否可以将System.Threading.Timer对象引用传递给它的回调函数,如下所示:
System.Threading.Timer myTimer = new System.Threading.Timer(new TimerCallback(DoSomething), myTimer, 2000, Timeout.Infinite);
Run Code Online (Sandbox Code Playgroud)
因为在"DoSomething"方法中我想调用:
myTimer.Change(5000, Timeout.Infinite);
Run Code Online (Sandbox Code Playgroud)
我将在下面粘贴草稿控制台应用程序.想法是这样的:我有计时器列表.每个计时器都会发出一些请求,当它收到请求时,它会更改一些共享数据.但是,我无法将定时器的引用传递给它的回调,也不能使用它的索引,因为它因某种原因(调查)变为"-1".
using System;
using System.Collections.Generic;
using System.Threading;
namespace TimersInThreads
{
class Program
{
public static int sharedDataInt;
static private readonly object lockObject = new object();
public static List<System.Threading.Timer> timers = new List<Timer>();
static void Main(string[] args)
{
System.Threading.Timer timer = new System.Threading.Timer(new TimerCallback(DoSomething), timers.Count - 1, 2000, Timeout.Infinite);
timers.Add(timer);
System.Threading.Timer timer2 = new System.Threading.Timer(new TimerCallback(DoSomething), timers.Count - 1, 2000, Timeout.Infinite);
timers.Add(timer2);
System.Threading.Timer timer3 = new System.Threading.Timer(new TimerCallback(DoSomething), …Run Code Online (Sandbox Code Playgroud) 我有一张桌子'书'.为简单起见,这里有3列:
name(text) | new(boolean) | press(text)
Run Code Online (Sandbox Code Playgroud)
我需要选择拥有大多数新书的出版社(出版社).我不明白为什么Access显示"语法错误".
SELECT press, COUNT(new) AS [Number of new books]
FROM books
WHERE new = TRUE
GROUP BY press
HAVING COUNT(new) =
SELECT MAX(s)
FROM
( SELECT COUNT(new) AS s, press
FROM books
WHERE new = TRUE
GROUP BY press
)
Run Code Online (Sandbox Code Playgroud)
如果我只写第二部分:
SELECT MAX(s)
FROM
( SELECT COUNT(new) AS s, press
FROM books
WHERE new = TRUE
GROUP BY press
)
Run Code Online (Sandbox Code Playgroud)
它返回正确的值(5)
如果我只写第一部分有条件= 5,那就好了.
SELECT press, COUNT(new) AS [Number of new books]
FROM …Run Code Online (Sandbox Code Playgroud) MS SQL Server数据库.
我有这个简单的结构:(抱歉主键不在正确的位置)

在TEACHER表中,我有一个外键"Chief",它引用了TEACHER.ID(同一个表).在进行SELECT查询时,我怎么能得到一个整数(Teacher.ID),而不是一个Chief的名字(TEACHER.Name for Chief)?
这个只得到一个整数(Chief的ID):
SELECT DEPARTMENT.Name, TEACHER.Name, TEACHER.IDCode, POST.Name, TEACHER.Tel, TEACHER.Salary, TEACHER.Rise, TEACHER.HireDate, Chief
FROM TEACHER, DEPARTMENT, POST
WHERE TEACHER.ID_Post = POST.ID AND
TEACHER.ID_Department = DEPARTMENT.ID;
GO
Run Code Online (Sandbox Code Playgroud) 在阅读Troelsen的书"Pro C#5.0和.NET 4.5 Framework"时,我遇到了这两个术语.我或多或少了解公共语言运行时(CLR)是什么,但".NET运行时"与CLR是一回事吗?
我想是的.
在SQL Server 2008(TSQL)中,我创建了一个这样的存储过程:
CREATE PROCEDURE SP_1_10_2
AS
declare @mostValuableBook nvarchar(255)
SELECT @mostValuableBook = Name
FROM books
WHERE price =
( SELECT MAX(price)
FROM books
WHERE izd LIKE '%BHV%' );
return @mostValuableBook
GO
Run Code Online (Sandbox Code Playgroud)
但是,当我试图执行它时:
declare @x nvarchar(255)
EXECUTE @x = SP_1_10_2;
SELECT 'The most expensive BHV book:', @x AS 'Name'
GO
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:
将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败.
似乎问题就在于此
EXECUTE @x = SP_1_10_2;
Run Code Online (Sandbox Code Playgroud)
你能告诉我什么是错的吗?为什么要尝试转换为int?