全部 -
问我最近遇到的一个具体问题,并且令人惊讶地没有找到任何令人信服的答案.
什么是C#Hashtable(和内部使用Hashtable的Dictionary)利用的内部支持数据结构
所以本质上 - 什么样的存储桶是存储在 - ArrayList,LinkedList(我知道这里不是答案)的关键值对,树结构等.
不寻找碰撞策略等 - 只要计算一个哈希码 - Hashtable在内部使用什么数据结构来存储这个值?
任何解释或文章指针都会有所帮助.
我特别关注引用类型中的内容相等性.在任何一种情况下,我都不会压倒平等 - 所以为什么行为会有所不同.
参见2个简单的代码示例:
示例1:返回True
class Program
{
static void Main(string[] args)
{
object o1 = "ABC";
object o2 = "ABC";
Console.WriteLine("object1 and object2: {0}", o1.Equals(o2));
}
}
Run Code Online (Sandbox Code Playgroud)
示例2:两个语句都返回False
class Program
{
static void Main(string[] args)
{
Person person1 = new Person("John");
Person person2 = new Person("John");
Console.WriteLine("person1 and person2: {0}", person1.Equals(person2));
Console.WriteLine("person1 and person2: {0}", ((object)person1).Equals((object)person2));
Console.ReadLine();
}
}
public class Person
{
private string personName;
public Person(string name)
{
this.personName = name;
}
}
Run Code Online (Sandbox Code Playgroud) string是引用类型(类似于object).为什么在以下场景中的diff行为 - 在创建字符串和对象的实例时?
我理解字符串中不变性等的概念,但这与分配给字符串的值(不会改变)有关.我的问题更多的是为什么s2正在创建另一个完整的实例,而如果我已经完成了对象它不会这样做?

字符串示例
class Program
{
static void Main(string[] args)
{
string s1 = "Hello";
string s2 = s1;
s1 = null;
Console.WriteLine("s1 = " + s1);
Console.WriteLine("s2 = " + s2);
Console.ReadLine();
}
}
Run Code Online (Sandbox Code Playgroud)
输出:s2仍然打印"你好"
对象的例子
class Program
{
static void Main(string[] args)
{
Name s1 = new Name();
s1.id = 5;
Name s2 = s1;
s1 = null;
Console.WriteLine("s1 = " + s1.id);
Console.WriteLine("s2 = " + s2.id);
Console.ReadLine();
}
}
public class Name
{
public …Run Code Online (Sandbox Code Playgroud) 我有一个List names = new List {"aa","bb","cc"}.我想使用LINQ方式并为每个方法添加一个字符串(而不是String builder和foreach循环).所以最终的输出结果如下:
names[0] = aaxyz
names[1] = bbxyz
names[2] = ccxyz
Run Code Online (Sandbox Code Playgroud)
有什么建议.
全部 -
已阅读有关新关键字的各种文章以及何时应该使用它:
MSDN - http://msdn.microsoft.com/en-us/library/6fawty39(v=vs.80).aspx
StackOverflow - 在与基类成员具有相同名称的派生类成员中使用new关键字的好处
这是我为实践这个概念而编写的示例代码
static void Main(string[] args)
{
Animal a2 = new Dog();
a2.Talk();
a2.Sing();
a2.Greet();
a2.Dance();
Console.ReadLine();
}
class Animal
{
public Animal()
{
Console.WriteLine("Animal constructor");
}
public void Talk()
{
Console.WriteLine("Animal is Talking");
}
public virtual void Sing()
{
Console.WriteLine("Animal is Singing");
}
public void Greet()
{
Console.WriteLine("Animal is Greeting");
}
public virtual void Dance()
{
Console.WriteLine("Animal is Dancing");
}
}
//Derived Class Dog from Animal
class Dog : Animal
{ …Run Code Online (Sandbox Code Playgroud) 全部-
需要对此问题有一些了解。我创建了一个示例项目,以将问题隔离到我的一个项目中。我试图基于模型中的某个值(Int / String / Enum)设置Border的背景。
我遇到的问题是:
1)我相信正在设置DataTrigger绑定中的源-但我仍然收到此错误:在' object''String '上找不到personId属性。BindingExpression:Path = personId; DataItem ='字符串'(HashCode = 1896530089); 目标元素是'Border'(Name =''); 目标属性为“ NoTarget”(类型“ Object”)
2)我在int(或字符串)上执行此操作只是为了使概念起作用。但实际上,我需要将此作为Enum值。关于此的任何建议也将有所帮助。
以下是代码片段:
人.cs
public class Person
{
public int personId { get; set; }
public string personName { get; set; }
public Gender personType { get; set; }
public enum Gender
{
Male,
Female
}
}
Run Code Online (Sandbox Code Playgroud)
PersonViewModel.cs
public class PersonViewModel
{
private ObservableCollection<Person> _people;
public ObservableCollection<Person> people
{
get
{
return _people;
}
}
public PersonViewModel()
{
_people …Run Code Online (Sandbox Code Playgroud) SQL Server - 我有3个简单的表(Fname,Lname和Exceptions),每个表都有一个名为Name的列.我希望我的最终结果看起来像:( FName中的每个人和LName中的所有人) - (每个人都是例外).
FName参数:
Name
A
B
Run Code Online (Sandbox Code Playgroud)
LName的:
Name
Y
Z
Run Code Online (Sandbox Code Playgroud)
例外:
Name
A
Z
Run Code Online (Sandbox Code Playgroud)
预期的查询结果集:
B
Y
Run Code Online (Sandbox Code Playgroud)
当前的SQL查询:
Select Name from Fname
UNION ALL
Select Name from Lname
WHERE Name NOT IN
(Select Name from Exceptions)
Run Code Online (Sandbox Code Playgroud)
SQL查询仅适用于删除出现在LName但不出现在Fname中的数据.有人可以帮忙吗
我目前有一个LINQ语句,可以使用方法语法.很想知道等效查询语法是怎样的.尝试进行多次迭代,但无法使用查询语法成功
目前我有2个字符串 - 一个是句子,另一个是字母.我将它们转换为字符进行比较 - 所以我可以在完整字符串中找到字符的出现次数.
string sentenceToScan = "I Love StackOverflow!!!!";
string characterToScanFor = "e";
var stringToCheckAsCharacterArray = sentenceToScan.ToCharArray();
var characterToCheckFor = Char.Parse(characterToScanFor);
int numberOfOccurenes = stringToCheckAsCharacterArray.Count(n =>
n == characterToCheckFor);
Answer: 2
Run Code Online (Sandbox Code Playgroud) 这更多地与面试问题有关 - 我多次被问到什么是进入OutOfMemoryExceptionC#多线程环境的最简单方法.具体来说,我们如何在以下每个多线程机制中实现它: