小编Jon*_*art的帖子

C#List <T>隐藏属性?

可能重复:
当IsReadOnly是接口成员时,List <T>如何使IsReadOnly成为私有的?

好的,这让我疯了.List<T>实施IList<T>.然而,

IList<int> list = new List<int>();
bool b = list.IsReadOnly;
bool c = ((List<int>)list).IsReadOnly;    // Error
Run Code Online (Sandbox Code Playgroud)

错误是:

'System.Collections.Generic.List'不包含'IsReadOnly'的定义,也没有扩展方法'IsReadOnly'接受类型为'System.Collections.Generic.List'的第一个参数'(你是否缺少using指令)或汇编参考?)

怎么会这样?这是否违反了我们告诉所有人的规则,关于不隐藏会员?这里的实施细节是什么?

c# member-hiding

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

如何仅在递归函数调用中第一次调用另一个函数?

我想打电话给"function2();" 仅在第一次调用recurfunc()时的单次时间.

recurfunc()
{
    function2();     //to be called first time only in a recursive function
    static int i= 0;
    i++;

    if(i>20)
        return;
    else
    recurfunc();
}
Run Code Online (Sandbox Code Playgroud)

c

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

MySQL 命令不适用于 Windows CMD

我在 Windows 上的 MySQL 设置有问题。首先,我从 dev.mysql.com 下载了最新的 Windows Installer 并安装了服务器。现在,当我尝试在 cmd 中执行 MySQL 命令时(我已经修改了 PATH 变量,并且我以 MySQL root 用户身份登录)该命令不会被执行,只会显示一个“->”。

我只能通过输入“\q”来退出这个“模式”,而不是通过执行“exit”。

也许你可以帮助我,我的 Ruby on Rails 项目真的需要 MySQL。

谢谢!

mysql windows command-line

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

extern和volatile之间的区别

这个问题涉及volatile和extern变量之间的区别以及编译器优化.

一个外部变量在主文件中定义,并在另一个源文件中使用,如下所示:

ExternTest.cpp:

short ExtGlobal;
void Fun();

int _tmain(int argc, _TCHAR* argv[])
{

    ExtGlobal=1000;
    while (ExtGlobal < 2000)
    {
        Fun();
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Source1.cpp:

extern short ExtGlobal;

void Fun()
{
    ExtGlobal++;
}
Run Code Online (Sandbox Code Playgroud)

在vs2012中为此生成的程序集如下:

用于访问外部变量的ExternTest.cpp程序集

ExtGlobal=1000;
013913EE  mov         eax,3E8h  
013913F3  mov         word ptr ds:[01398130h],ax  

while (ExtGlobal < 2000)
013913F9  movsx       eax,word ptr ds:[1398130h]  
01391400  cmp         eax,7D0h  
01391405  jge         wmain+3Eh (0139140Eh) 
Run Code Online (Sandbox Code Playgroud)

Source.cpp程序集用于修改extern变量

ExtGlobal++;
0139145E  mov         ax,word ptr ds:[01398130h]  
01391464  add         ax,1  
01391468  mov         word ptr ds:[01398130h],ax  
Run Code Online (Sandbox Code Playgroud)

从上面的程序集中,while循环中对变量"ExtGlobal"的每次访问都从相应的地址中读取值.如果我向外部变量添加volatile,则生成相同的汇编代码.两个不同线程中的易失性使用和两个不同功能中的外部变量使用是相同的.

c

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

在字节数组中交换字节

有谁知道是否有.NET 函数可以在字节数组中交换字节?

例如,假设我有一个具有以下值的字节数组:

byte[] arr = new byte[4];

[3] 192
[2] 168
[1] 1
[0] 4
Run Code Online (Sandbox Code Playgroud)

我想交换它们,使数组变为:

[3] 168
[2] 192
[1] 4
[0] 1
Run Code Online (Sandbox Code Playgroud)

[3] 的 val 与 [2] 的 val 和 [1] 的 val 与 [0] 的 val 交换

.net c# byte

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

指定printf的可变小数位数

我想知道如何使用scanf()允许用户键入他想要给出的答案的小数位数,以及如何将此变量输入到printf格式说明符中.例如

printf("The answer is %.(variable wanted here)f", answer);
Run Code Online (Sandbox Code Playgroud)

c printf

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

C#中++运算符的一致行为

++应用于C#中的long的应用程序的行为在应用时是否一致long.MaxValue?呼叫不是在一个checked块内进行的.我需要知道,无论在任何情况下,现在还是将来,它都可能抛出OverflowException而不是包装long.MinValue.

c# increment integer-overflow

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

从do while语句接收用户输入

我在这里完全失败了...逻辑似乎设置正确但是while语句中的"响应"表示它在当前上下文中不存在.我在这里搜索,似乎在这种情况下似乎找到了相同的问题.问题是融合方法吗?

    do
        {
            Console.WriteLine("enter a number between 1 and 5");
            int x = Convert.ToInt32(Console.ReadLine());

            Random r = new Random();
            int rr = r.Next(1, 5);
            Console.WriteLine("Do you want to continue?  Please select yes or no.");
            string response = Convert.ToString(Console.ReadLine());
        } while (response == "yes");
Run Code Online (Sandbox Code Playgroud)

c# do-while

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

在以太网端口上接收网络数据和 apache2 做某事之间会发生什么?

这是一个模糊的问题,因为我自己的理解也同样模糊。我感兴趣的是网络电缆上的零星电压需要发生什么才能导致计算机上运行的程序执行某些操作。

假设我在我的网络服务器上运行 apache2。有人在自己的联网计算机上触发了正确的事件序列,从而导致网络数据到达服务器。然后呢?

我的猜测是主板上有一些外围组件可以侦听数据,然后在 CPU 中引发中断。不知何故,在中断服务例程中,Linux 必须要求 apache2 代码做一些事情。这样对吗?如果是这样,有人愿意分享一些额外的细节吗?

谢谢

apache hardware networking linux-device-driver linux-kernel

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

Valgrind 说内存“肯定丢失”是什么意思?

以下程序:

#include <stdlib.h>

int main(void)
{
    char *my_str = malloc(42 * sizeof(char));

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译如下:

gcc -g -o prog prog.c
Run Code Online (Sandbox Code Playgroud)

并用 Valgrind 执行如下:

valgrind --leak-check=full ./prog
Run Code Online (Sandbox Code Playgroud)

产生以下(截断的)输出:

...
==18424== HEAP SUMMARY:
==18424==     in use at exit: 42 bytes in 1 blocks
==18424==   total heap usage: 1 allocs, 0 frees, 42 bytes allocated
==18424== 
==18424== 42 bytes in 1 blocks are definitely lost in loss record 1 of 1
==18424==    at 0x4C2FB0F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==18424==    by 0x10865B: main (main.c:5) …
Run Code Online (Sandbox Code Playgroud)

c valgrind memory-leaks

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