小编Are*_*yst的帖子

有趣的面试练习结果:返回,后增量和ref行为

这是一个简单的控制台应用程序代码,它返回一个我完全不理解的结果.

试着想一想它是否在控制台中输出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?

c# increment ref operator-precedence

59
推荐指数
2
解决办法
3859
查看次数

T-SQL(MS SQL 2008),执行没有'EXEC'或'EXECUTE'字的程序

是否可以在开头执行没有'EXEC'或'EXECUTE'字样的存储过程?

通常我执行存储过程

EXEC DeleteProfile 'Joe Smith'
Run Code Online (Sandbox Code Playgroud)

但是,我注意到下一个命令也可以运行:

DeleteProfile 'Joe Smith'
Run Code Online (Sandbox Code Playgroud)

我为什么要写'EXEC'或'EXECUTE'字样?

可以不在存储过程名称之前写入它来执行存储过程吗?

谢谢.

t-sql stored-procedures execute exec sql-server-2008

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

代码执行派生类方法,但从基类方法获取默认参数

有人可以解释为什么下面的代码的结果将是"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)

c++ virtual derived default-parameters

7
推荐指数
3
解决办法
900
查看次数

使用GROUP BY从多个表中进行SELECT

我对多重查询有一点问题.(RDBMS:访问)

以下是数据库模式:(此查询中仅使用S_Cards,Books,Authors,Students表)S_Cards是学生书籍订单(在库中).

DB方案

查询:选择学生中最受欢迎的作者以及在图书馆中订购的作者书籍的编号.

虽然我可以在一个查询中获得这样的订单列表+这样的作者:

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)

sql ms-access group-by count

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

C#,将变量转换为Enum.GetUnderlyingType

假设我有枚举,底层类型是字节:

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的情况下转换为基础类型吗?

谢谢.

.net c# enums casting

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

Google Chrome开发者工具:搜索完全匹配

如何在网站上的所有JavaScript源中搜索某些包含空格的文本?我知道我应该使用"CTRL + SHIFT + F"(在Windows上),但谷歌Chrome开发者工具不是搜索整个句子,而是搜索由空格分隔的每个单词.如何准确找到我在搜索框中输入的内容?

请看截图: 搜索如何工作

这是Chrome版"33.0.1750.117"中的错误吗?以前工作正常......有解决方法吗?

javascript google-chrome developer-tools

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

将System.Threading.Timer对象引用传递给其回调函数

是否可以将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)

.net c# timer

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

SELECT不返回数值

我有一张桌子'书'.为简单起见,这里有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)

sql ms-access select group-by

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

SQL,获取外键值.外键引用同一个表

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)

sql sql-server select key

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

"CLR"与".NET运行时"是一回事吗?

在阅读Troelsen的书"Pro C#5.0和.NET 4.5 Framework"时,我遇到了这两个术语.我或多或少了解公共语言运行时(CLR)是什么,但".NET运行时"与CLR是一回事吗?

我想是的.

.net clr runtime

3
推荐指数
3
解决办法
679
查看次数

将nvarchar值'Internet Explorer 3 original'转换为数据类型int时转换失败

在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?

t-sql int nvarchar execute

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