它们必须放在.cs文件的顶部.你不能在运行时动态创建这些人,你不能给他们一个值或改变他们的价值,因为没有任何价值,所以#define关键字的重点是什么?
这是一个例子:
#define DEBUG
#define MYTEST
using System;
public class MyClass
{
static void Main()
{
#if (DEBUG && !MYTEST)
Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && MYTEST)
Console.WriteLine("MYTEST is defined");
#elif (DEBUG && MYTEST)
Console.WriteLine("DEBUG and MYTEST are defined");
#else
Console.WriteLine("DEBUG and MYTEST are not defined");
#endif
}
}
Run Code Online (Sandbox Code Playgroud)
两者都被定义在最顶层所以为什么还有所有这些ifs?
有人可以告诉我哪些定义有用吗?
对不起,如果这是重复的,请在评论中告诉我,如果有的话,我会删除这个问题.
这是我手动添加一些DataRow this.listBox1.Items并在WinForms Designer中设置DisplayMemberto列名称的东西,但是稍后显示的只是类型名称列表(System.Data ...)。
如何解决这个问题?
码:
list1.ForEach(x => this.listBox1.Items.Add(x)); //x is DataRow from a filled DataTable
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种通过使用linq语句从两个列表中过滤数据来创建dic的方法.例如:
list1: { 1, 2, 3 }
list2: { <apple, 1>, <peach, 3> }
Run Code Online (Sandbox Code Playgroud)
最后的字典看起来应该是这样的: Dictionary<key, value>
使用linq语句将跳过"2",但我不知道哪个?
请问如何使用linq解决这个问题?谢谢
据Resharper说,这两个人应该这样做:
1)
string strTemp = null;
foreach (var s in array)
{
if (strTemp == null || !strTemp.Contains(s))
{
strTemp += (!string.IsNullOrEmpty(strTemp) ? ";" : string.Empty) + s;
}
}
Run Code Online (Sandbox Code Playgroud)
2)
string strTemp = null;
foreach (var s in array.Where(s => strTemp == null || !strTemp.Contains(s)))
{
strTemp += (!string.IsNullOrEmpty(strTemp) ? ";" : string.Empty) + s;
}
Run Code Online (Sandbox Code Playgroud)
怎么会这样?我错过了什么?
我有一个方法只接受ienumerable<t>参数,但我的本地值是一个简单的可数字.
我无法改变这些条件.
现在我的问题是如何在ienumerable<t>不丢失项目的对象引用的情况下获得可数据?我不想复制数据或其他任何东西.
请问ienumerable.Cast<object>()做的工作?我不希望新的参考项目,我只想ienumerable<t>尽可能快地从可数字.
当HashSet需要时,HashSet是否始终执行未执行的可发送的可数字?
例如:
list = new List { 1 ..... 1000);
var linq = list.Where(x => x > 10);
var hashSet = new HashSet(linq);
Run Code Online (Sandbox Code Playgroud)
现在当我hashSet.Contains(7)在一个for loop遗嘱中调用时,hashSet总是在需要时执行Where语句?
for(int i = 0; i < 10000; ..)
{
hashSet.Contains(7);
}
Run Code Online (Sandbox Code Playgroud)