我正在深入阅读C#(第3版)和第13章,在c#4中讨论包含协变和逆变类型参数的部分,这个主张是:
对于List.AddRange该参数的类型的IEnumerable的<T>,所以在这种情况下,你把每个列表作为一个IEnumerable <IShape的> -something,不会有以前是不可能的.AddRange本来可以用它自己的类型参数写成泛型方法,但它没有 - 这样做会使一些优化变得困难或不可能.
有人能为这种说法提供一些理由吗?对我来说这是真的并不明显.
我试着这样做
#include <iostream>
#include <fstream>
using namespace std;
int main()
{
char b[2];
ifstream f("prad.txt");
f>>b ;
cout <<b;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它应该读取2个字符,但它读取整行.这适用于另一种语言但由于某种原因无法在C++中运行.
我有这种结构的文字:
1. Text1
2. Text 2. It has a number with a dot.
3. 1. Text31
Run Code Online (Sandbox Code Playgroud)
我想得到这个文字:
# Text1
# Text 2. It has a number with a dot. (notice that this number did not get replaced)
## Text31
Run Code Online (Sandbox Code Playgroud)
我尝试了以下操作,但它不起作用
var pattern = @"^(\s*\d+\.\s*)+";
var replaced = Regex.Replace(str, pattern, "#", RegexOptions.Multiline);
Run Code Online (Sandbox Code Playgroud)
基本上,它应该在每一行的开头开始匹配,并用#符号替换每个匹配的组.目前,如果匹配多个组,则所有内容都将替换为单个#符号.我使用的模式可能不正确,任何人都可以提出解决方案吗?
用户输入一个整数,该整数对应于定义的枚举类型的值。我需要将该值分配给变量t。这就是我的想法:
type test = (red,green,blue,fish);
var t:test;
n,i:integer;
begin
readln(n);
t:=red;
for i:=1 to n do
t:=succ(t);
end.
Run Code Online (Sandbox Code Playgroud)
我是否让任务过于复杂化了?是否可以写一个更简单的算法?
这是宣言
dll_DoublyLinkedNode *dll_search(const dll_DoublyLinkedList list, void *key, int (*compare)(void *data, void *key)){
Run Code Online (Sandbox Code Playgroud)
我应该分开吗?我应该保持原样吗?也许我应该做些不同的事情?
我有3个文件:
main.c中
#include <stdio.h>
#include <stdlib.h>
#include "test.h"
#define DEBUG
int main()
{
testFunction();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
test.h
#ifndef TEST_H
#define TEST_H
#include <stdio.h>
#include <stdlib.h>
void testFunction();
#endif // TEST_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)
test.c的
#include "test.h"
void testFunction(){
#ifdef DEBUG
printf("I'm inside the testFunction\n");
#endif
}
Run Code Online (Sandbox Code Playgroud)
问题:为什么程序不能在#ifdef DEBUG块中打印东西?如果我在test.h或test.c中写#define DEBUG一切都很好.那么在main.c中#define DEBUG的问题是什么?谢谢.
假设我有这样的结构:
typedef struct MyStruct{
char *string1;
int number1, number2, number3;
char string2[11], string3[9];
char *string4;
char *string5;
}MyStruct;
Run Code Online (Sandbox Code Playgroud)
程序提示用户选择应该对数据进行排序的字段.我无法想到一种有效排序数组的方法.我真的需要为每个字段编写单独的排序函数吗?必须有其他一些方法,因为编写8个函数,其中2就足够了,看起来不合理.
假设我有这个输入元素:
<input id="email" value="some@email.com">
Run Code Online (Sandbox Code Playgroud)
我执行这段代码:
var emailInputField = driver.FindElement(By.Id(email));
var email = emailInputField.GetAttribute("value");
emailInputField .InputField.Clear();
var empty = emailInputField.GetAttribute("value");
Run Code Online (Sandbox Code Playgroud)
我希望变量empty为空,但它包含与电子邮件相同的文本,因为我清除了文本.我意识到value属性不会与输入的文本同步,所以我的问题是,如何找出文本框中当前的文本?
我收到错误"'之前的预期类型说明符';' 令牌"在下面标记的代码行中.是否要求指定(*this)的类型?为什么编译器不知道(*this)的类型?
struct P{
};
struct R : public P{
virtual P* copy(){
return new(R(*this)); //error here
}
};
Run Code Online (Sandbox Code Playgroud) 例如,我有一个这样的数组:
bool log[100000]
Run Code Online (Sandbox Code Playgroud)
我有循环,我想将log中所有元素的值设置为True.换句话说,我想擦除在循环的每个循环之后已经完成的所有更改.我怎么能这样做?我可以改变不是全部,但让我们说100个值?
我有一个文本文件,如下所示:
73167176531330624919225119674426574742355349194934 96983520312774506326239578318016984801869478851843 85861560789112949495459501737958331952853208805511
等等20行.我想要做的是从文本文件中读取每个数字并将它们放入一个整数数组(一个元素=一个数字).如何从该文本文件中只读取一位数,而不是整行?
所以,我有一个结构
struct foo
{
int a;
int b;
int c;
char *string;
};
typedef struct foo foo;
Run Code Online (Sandbox Code Playgroud)
我有一个功能
void fun(void *data1, void *data2, int offset){
int num1 = *(int *)(data1 + offset);
int num2 = *(int *)(data2 + offset);
printf("%d %d\n", num1, num2);
}
Run Code Online (Sandbox Code Playgroud)
而且效果很好.但是当我尝试用字符串做同样的事情时出了点问题.
void fun(void *data1, void *data2, int offset){
char *str1 = (char *)(data1 + offset);
char *str2 = (char *)(data2 + offset);
printf("%s %s\n", str1, str2);
}
Run Code Online (Sandbox Code Playgroud)
函数只打印一些随机字符.由于指针我开始变得头疼...
我有一个接口,我希望枚举实现它,但有些方法是相同的,它会导致代码重复.我会使用抽象类而不是接口,但java不允许枚举扩展任何东西.有没有解决的办法?我包含一些代码来帮助理解问题.
public interface CommandI {
boolean isCommand(String command);
void execute(Drawer drawer, Creature creature);
String getDescription();
}
public enum Command2 implements CommandI {
FORWARD{
private String description = "qwersadd";
private String[] aliases = {"fd", "forward"};
@Override
public boolean isCommand(String command) {
for (String s: aliases){
if (s.equals(command)){
return true;
}
}
return false;
}
@Override
public void execute(Drawer drawer, Creature creature) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public String getDescription() {
return description;
}
},
PENUP{
private String description …Run Code Online (Sandbox Code Playgroud)