Tag: C#的

指针和引用之间的区别作为线程参数

这是一个例子: #include<iostream> #include<thread> using namespace std; void f1(double& ret) { ret=5.; } void f2(double* ret) { *ret=5.; } int main() { double ret=0.; thread t1(f1, ret); t1.join(); cout << "ret=" << ret << endl; thread t2(f2, &ret); t2.join(); cout << "ret=" << ret << endl; } 输出是: ret=0 ret=5 用gcc 4.5.2编译,有和没有-O2 这是预期的行为? 这个程序数据竞赛是免费的吗? 谢谢

为什么C#foreach语句中的迭代variables是只读的?

据我所知,C#的foreach迭代variables是不可变的。 这意味着我不能像这样修改迭代器: foreach (Position Location in Map) { //We want to fudge the position to hide the exact coordinates Location = Location + Random(); //Compiler Error Plot(Location); } 我不能直接修改迭代器variables,而是必须使用for循环 for (int i = 0; i < Map.Count; i++) { Position Location = Map[i]; Location = Location + Random(); Plot(Location); i = Location; } 来自C ++的背景,我认为foreach作为for循环的替代。 […]

generics约束,其中T:struct和where T:class

我想区分以下情况: 一个普通的值types(例如int ) 可以为null的值types(例如int? ) 一个引用types(如string ) – 可选的,我不在乎这是否映射到上面的(1)或(2) 我已经拿出了下面的代码,它适用于案件(1)和(2): static void Foo<T>(T a) where T : struct { } // 1 static void Foo<T>(T? a) where T : struct { } // 2 但是,如果我试图检测这种情况(3),它不会编译: static void Foo<T>(T a) where T : class { } // 3 错误消息是types'X'已经使用相同的参数types定义了一个名为'Foo'的成员 。 那么,不知何故,我不能where T : struct和where T : […]

在C#5.0中捕获的闭包(循环variables)

这工作正常(意味着如预期)在C#5.0中: var actions = new List<Action>(); foreach (var i in Enumerable.Range(0, 10)) { actions.Add(() => Console.WriteLine(i)); } foreach (var act in actions) act(); 打印0到9.但是这个10次显示10次: var actions = new List<Action>(); for (var i = 0; i < 10; i++) { actions.Add(() => Console.WriteLine(i)); } foreach (var act in actions) act(); 问题:这是我们在5.0之前的C#版本中遇到的问题; 所以我们必须使用循环本地占位符来封闭,现在在C#5.0中,在“foreach”循环中已经修复了。 但不是在“for”循环中! 这背后的原因是什么(也没有解决for循环的问题)?

如何复制在C中的字符数组?

在C中,我有两个char数组: char array1[18] = "abcdefg"; char array2[18]; 如何将array1的值复制到array2 ? 我可以这样做: array2 = array1 ?

如何在构造函数中初始化一个常量字段?

想象一下,我有一个C ++类Foo和一个类Bar,必须使用构造函数创build一个Foo指针,并且该指针在Bar实例生命周期中保持不变。 什么是正确的做法呢? 事实上,我以为我可以写下面的代码,但它不编译.. class Foo; class Bar { public: Foo * const foo; Bar(Foo* foo) { this->foo = foo; } }; class Foo { public: int a; }; 任何build议是值得欢迎的。

无数据存在时无效尝试读取

private void button1_Click(object sender, EventArgs e) { string name; name = textBox5.Text; SqlConnection con10 = new SqlConnection("con strn"); SqlCommand cmd10 = new SqlCommand("select * from sumant where username=@name"); cmd10.Parameters.AddWithValue("@name",name); cmd10.Connection = con10; cmd10.Connection.Open();//line 7 SqlDataReader dr = cmd10.ExecuteReader(); } if ( textBox2.Text == dr[2].ToString()) { //do something; } 当我debugging,直到第7行,这是可以的,但之后,博士抛出一个exception: Invalid attempt to read when no […]

我可以在属性中指定path来将我的类中的属性映射到我的JSON中的子属性?

有一些代码(我不能改变),它使用Newtonsoft.Json的DeserializeObject<T>(strJSONData)从Web请求中获取数据并将其转换为类对象(我可以更改类)。 通过使用[DataMember(Name = "raw_property_name")]装饰我的类属性,我可以将原始JSON数据映射到我的类中正确的属性。 有没有一种方法可以将JSON复杂对象的子属性映射到一个简单的属性? 这是一个例子: { "picture": { "id": 123456, "data": { "type": "jpg", "url": "http://www.someplace.com/mypicture.jpg" } } } 我不关心其他的图片对象,除了URL,所以不想在我的C#类中设置一个复杂的对象。 我真的只想要像这样的东西: [DataMember(Name = "picture.data.url")] public string ProfilePicture { get; set; } 这可能吗?

我可以用reflection设置属性值吗?

我知道我的C#类中的一个属性的名称。 是否有可能使用reflection设置此属性的值? 例如,说我知道一个属性的名称是string propertyName = "first_name"; 。 那里有一个名为first_name的属性。 我可以使用这个string来设置吗?

如何在.NET中读取XML?

XML noob在这里! 所以我有一些XML数据: <DataChunk> <ResponseChunk> <errors> <error code=\"0\"> Something happened here: Line 1, position 1. </error> </errors> </ResponseChunk> </DataChunk> 如何获得“错误”列表,我可以访问“错误代码”和下面的文本描述? 另外,我在c#中使用.net4.0 …谢谢!