我有一个类Node如下:
public class Node
{
public Dictionary<string, string> dictionary;
public Node(Dictionary<string, string> dictionary)
{
this.dictionary = dictionary;
}
public void CreateNode()
{
this.dictionary.Add("1", "String1");
Dictionary<string, string> dictionary1 = new Dictionary<string, string>();
Console.WriteLine(this.dictionary["1"]);
Node tmp = new Node(dictionary1);
tmp.dictionary = this.dictionary;
Console.WriteLine(tmp.dictionary["1"]);
tmp.AddE(tmp, "String2","2");
Console.WriteLine(this.dictionary["2"]);
}
public void AddE(Node tmp,String text,string c)
{
tmp.dictionary.Add(c,text);
}
}
Run Code Online (Sandbox Code Playgroud)
Node有一个包含字符串键和值的字典,一个带参数的构造函数,一个CreateNode()方法,它将一个项添加到字典中并创建另一个Node.现在,在tmp.dictionary = this.dictionary之后; 在tmp.dictionary上添加了另一个项目,但是它也添加在this.dictionary中(我不希望发生这种情况,我很想丢失).
主要方法:
static void Main(string[] args)
{
Dictionary<string, string> dictionary …Run Code Online (Sandbox Code Playgroud) 考虑以下:
int ival = 1.01;
int &rval = 1.01; // error: non-const reference to a const value.
int &rval = ival;
rval = 1.01;
Run Code Online (Sandbox Code Playgroud)
&rval到文字值的第一次赋值失败了.如果我注释掉该行代码编译并运行.我理解为什么初始化失败了,但我很困惑为什么rval的赋值在最后一行工作.我认为不允许分配对文字值的引用.
编辑:谢谢你的快速解答.我很想删掉这个以掩饰我的耻辱,但我想我会留在这里,所以其他人都可以指出并笑.
在我自己的辩护中,我正在编写一本书中的练习(C++ Primer),这个问题与参考初始化有关.尽管如此,首先完全忽略了参考点是非常尴尬的.:)
如何在Python中推迟属性访问?
我们假设我们有:
def foo():
...
class Bar:
...
bar = Bar()
Run Code Online (Sandbox Code Playgroud)
是否可以实现Bar以便bar访问任何时间,foo()将提供回调返回的值?
barname已存在于上下文中.这就是为什么它的访问语义应该被保留(它不能是一个可调用的,转换成一个类的属性,使用SomeClass.bar而不是bar也行不通).我需要按原样保留所有内容,但是更改程序以便通过bar引用即时生成的数据foo().
UPD:感谢所有人的回答,从而在Python中做这类事情似乎是不可能的.我会找到一个解决方法.
好的,所以我是来自ColdFusion,PHP,Javascript的C#Windows App开发的新手.我想,我对它的反应相当好.我理解OO的基本概念以及它们是如何在C#中实现的,但我正在努力学习如何找到我正在寻找的东西,以及在对象,方法,集合等方面可以使用的东西.
例如.我有一个数据视图(名为"绘图"),我想使用RowFilter过滤它,所以我这样做:
drawing.RowFilter = "partNo = '" + partNo + "'";
Run Code Online (Sandbox Code Playgroud)
作为初学者,我现在如何知道如何访问该数据视图中的特定数据字段?我终于摸索了,并且能够以两种不同的方式做到:
drawing[0].Row.ItemArray[0]
or
drawing[0][0]
Run Code Online (Sandbox Code Playgroud)
我的问题是:我如何做更少的摸索,更多的理解和导航......本质上是生产力而不是猜测!?我已经逐步阅读了Visual C#.NET和Apress'Beginning C#OO,但他们似乎都没有告诉我如何导航这样的语言或者给出这个细节.这意味着这只是一个幸运而不是理解的问题,这似乎是浪费时间.我知道理解会随着时间和经验而来,但必须有更好的学习方法.无论是在基础层面还是在基础层面上存在着基本的理解,如果是这样的话,它是什么?
那么我怎么知道在数据视图中找到一个字段的值:"dataview"[index] .Row.ItemArray [index]?
我没有在书中看到它,我似乎无法在msdn网站上找到它:http://msdn.microsoft.com/en-us/library/01s96x0z.aspx
我只是一厢情愿吗?
我有一个关于在这里分配的问题,我想知道
Assign制作整个对象的副本和FTEA.Objects[0]也被释放了.我想复制一份,FTEA.Objects[0]当我获得自由时ObjCur,我不打算自由FTEA.Objects[0]- 不确定这样做的正确方法,需要你的帮助,谢谢:
function xxxxxxxxxxxxxxxxxxxxxxxx
var
curQuo, tempQuo:TXX_TEA;
begin
curQuo :=TXX_TEA(FTEA.Objects[0]);
if xxxxxxxxx then
begin
tempQuo := TXX_TEA.Create();
tempQuo.Assign(curQuo); // Question 1: Assign copy the whole object value or not
objCur.AddQuo(tempQuo)
end
else
TXX_TEA(objCur.Quos[0]).Assign(curQuo);
end;
finally
objCur.Free; // Question 2: FTEA.Objects[0] is freed or not
end;
end
Run Code Online (Sandbox Code Playgroud) 好奇,如果有人知道(或可以轻松测试)引用然后取消引用数组所需的时间.
my @foo = (0..1500000); # (~1.5M nodes).
join('',@{\@foo}); # any noticeable time difference vs join('',@foo) ?
Run Code Online (Sandbox Code Playgroud)
这显然没有正当理由,但我遇到了不合理的代码:)
我的"Policy"类有两个不同版本的构造函数.在使用其中一个构造函数时,我似乎无法通过引用传递Policy对象,我不明白为什么不这样做.
重载的构造函数:
Policy::Policy(int testing) {
initAge=160;
initState=1;
reset();
x[0]=4;
x[1]=2;
ub[0]=10;
ub[1]=10;
lb[0]=0;
lb[1]=0;
}
Policy::Policy() {
initAge=160;
initState=1;
reset();
x[FRQ]=4;
x[BEG]=40*4;
x[END]=75*4;
for(int i=0; i<240; i++)
x[2+i]=4.0;
x[GS]=2;
lb[0]=1;
ub[0]=80;
for(int i=1;i<3;i++) {
lb[i]=160;
ub[i]=400;
}
for(int i=3;i<243;i++) {
lb[i]=1;
ub[i]=16;
}
lb[243]=2;
ub[243]=4;
}
Run Code Online (Sandbox Code Playgroud)
这是我的代码,它给出了错误.
void sampleMIXD(Constraints& space, Policy& p);
int main(int argc, char** argv) {
// Policy policy(1); // Works
Policy policy(); // Does not work
Constraints space(2);
sampleMIXD(space, policy);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
错误信息:
'../main.cpp:64: error: invalid …
为什么以下代码无法进入匿名数组?
my @d = [3,5,7];
print $(@{$d[0]}[0]);
# but print $d[0][0] works.
Run Code Online (Sandbox Code Playgroud) 可能重复:
可以在其范围之外访问局部变量的内存吗?
请考虑以下简单的C++代码:
#include <iostream>
struct Test
{
Test( int i )
: ref( i ),
ptr( &i ) {}
int &ref;
int *ptr;
};
int main()
{
Test t( 5 );
std::cout << t.ref << std::endl;
std::cout << *t.ptr << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
Test类存储指针和对生活在堆栈上的局部变量的引用.我会假设从Test构造函数返回后我被破坏了.但显然事实并非如此.因为这是程序的输出:
5
134513968
Run Code Online (Sandbox Code Playgroud)
访问指针的结果是我所期望的:随机值随每次运行而变化.但是引用访问总是导致5 - 只是局部变量i仍然存在.
任何人都可以向我解释这种行为吗?我在64位Linux(版本4.6.3)上使用g ++.
此致,enuhtac
我正在从IL(Compiled C#\ VB代码)创建一个反编译器.有没有办法在C中创建引用?
编辑:
我想要比堆栈之类的指针更快的东西.有这样的事吗?