Tag: C#的

迭代器循环与索引循环

可能重复: 为什么使用迭代器而不是数组索引? 我正在评论我在C ++方面的知识,并且偶然发现了迭代器。 有一件事我想知道是什么让他们如此特别,我想知道为什么这样: using namespace std; vector<int> myIntVector; vector<int>::iterator myIntVectorIterator; // Add some elements to myIntVector myIntVector.push_back(1); myIntVector.push_back(4); myIntVector.push_back(8); for(myIntVectorIterator = myIntVector.begin(); myIntVectorIterator != myIntVector.end(); myIntVectorIterator++) { cout<<*myIntVectorIterator<<" "; //Should output 1 4 8 } 比这更好: using namespace std; vector<int> myIntVector; // Add some elements to myIntVector myIntVector.push_back(1); myIntVector.push_back(4); myIntVector.push_back(8); for(int y=0; y<myIntVector.size(); […]

使用“自动”types演绎 – 如何找出编译器推断的types?

怎样才能找出编译器在使用auto关键字时推导出的types? 示例1:更简单 auto tickTime = 0.001; 这是推断为一个float或double? 例2:更复杂(和我目前的头痛): typedef std::ratio<1, 1> sec; std::chrono::duration<double, sec > timePerTick2{0.001}; auto nextTickTime = std::chrono::high_resolution_clock::now() + timePerTick2; nextTickTime是什么types? 我遇到的问题是当我尝试发送nextTickTime到std::cout 。 我得到以下错误: ./main.cpp: In function 'int main(int, char**)': ./main.cpp:143:16: error: cannot bind 'std::basic_ostream<char>' lvalue to 'std::basic_ostream<char>&&' std::cout << std::setprecision(12) << nextTickTime << std::endl; // time in seconds ^ In file included […]

为什么C#允许语句之后的语句,但不是之前呢?

为什么C#允许这样做 : var s = "Nice"; switch (s) { case "HI": break; const string x = "Nice"; case x: Console.Write("Y"); break; } 但不是这样的 : var s = "Nice"; switch (s) { const string x = "Nice"; case x: Console.Write("Y"); break; }

用户控制,自定义控件和组件之间有什么区别?

这些是你可以添加到项目中的三种不同的东西,如果我了解其中的差异,我不太清楚。 当他们使用Form时,他们似乎都出现在组件工具箱中。 他们每个人有哪些常见的使用场景? 有什么不同?

C ++ catch块 – 通过值或引用捕获exception?

可能重复: 在C ++中通过指针捕获exception 我总是通过价值来捕捉exception。 例如 try{ … } catch(CustomException e){ … } 但我碰到一些代码,而不是catch(CustomException &e) 。 这是a)罚款b)错误c)灰色地带?

我们什么时候必须使用复制构造函数?

我知道C ++编译器为类创build一个拷贝构造函数。 在这种情况下,我们必须编写一个用户定义的拷贝构造函数吗? 你能举一些例子吗?

在C#中枚举的方法

在Java中,有一个选项可以使用enum对象来写入enum和函数。 在C#中是否有这样的可能性,或者它只是一个string集合,就是这样? 我试图“覆盖” ToString()函数,它不编译。 有人有一个简单的代码示例?

指针声明为常量以及易失性

在阅读时,我遇到了这种types的声明和下面的一行 – const volatile char *p=(const volatile char *) 0x30; p的值仅由外部条件改变 我没有得到什么外部条件。 而且这种宣言的实际用途是什么?

检查是否存在与LINQ的FirstOrDefault KeyValuePair

我有一个types的字典 Dictionary<Guid,int> 我想返回一个条件满足使用的第一个实例 var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0) 但是,如何检查我是否真的找回KeyValuePair? 我似乎无法使用!=或==检查与默认(KeyValuePair)没有编译器错误。 这里有一个类似的线程,似乎没有一个解决scheme。 我实际上能够通过获取关键字和检查Guid的默认值来解决我的特定问题,但是我很好奇是否有一个用keyvaluepair做这个的好方法。 谢谢

控制台应用程序中的App.Config文件C#

我有一个控制台应用程序,我想写一个文件的名称。 Process.Start("blah.bat"); 通常情况下,我会在Windows应用程序中通过将文件'blah.bat'的名称写入属性中的Settings文件中。 但是,在这里我没有find任何设置文件,我添加了一个app.config出于同样的目的。 我不知道在app.config中写什么,这会导致我在Windows窗体中实现类似的function。 例如:在Windows窗体中。 的Process.Start(Properties.Settings.Default.BatchFile); 其中BatchFile是属性中的设置文件中的string。