小编Pat*_*ick的帖子

C#Hashtable内部数据结构

全部 -

问我最近遇到的一个具体问题,并且令人惊讶地没有找到任何令人信服的答案.

什么是C#Hashtable(和内部使用Hashtable的Dictionary)利用的内部支持数据结构

所以本质上 - 什么样的存储桶是存储在 - ArrayList,LinkedList(我知道这里不是答案)的关键值对,树结构等.

不寻找碰撞策略等 - 只要计算一个哈希码 - Hashtable在内部使用什么数据结构来存储这个值?

任何解释或文章指针都会有所帮助.

c# data-structures

12
推荐指数
1
解决办法
6106
查看次数

参考类型的平等

我特别关注引用类型中的内容相等性.在任何一种情况下,我都不会压倒平等 - 所以为什么行为会有所不同.

参见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)

c#

7
推荐指数
1
解决办法
188
查看次数

字符串实例行为与对象不同

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)

c#

3
推荐指数
2
解决办法
211
查看次数

字符串附加LINQ

我有一个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)

有什么建议.

linq

2
推荐指数
1
解决办法
696
查看次数

新的关键字混乱

全部 -

已阅读有关新关键字的各种文章以及何时应该使用它:

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)

.net c#

2
推荐指数
1
解决办法
214
查看次数

数据触发器绑定问题(带有Int和Enum)

全部-

需要对此问题有一些了解。我创建了一个示例项目,以将问题隔离到我的一个项目中。我试图基于模型中的某个值(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)

data-binding wpf xaml

2
推荐指数
1
解决办法
3211
查看次数

UNION ALL而不是在一起

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中的数据.有人可以帮忙吗

sql sql-server union sql-server-2008

1
推荐指数
3
解决办法
2万
查看次数

LINQ查询语法(计数操作)

我目前有一个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)

c# linq

1
推荐指数
1
解决办法
3886
查看次数

C#MultiThreading环境中的OutOfMemoryException

这更多地与面试问题有关 - 我多次被问到什么是进入OutOfMemoryExceptionC#多线程环境的最简单方法.具体来说,我们如何在以下每个多线程机制中实现它:

  1. 异步代理
  2. 产生一个新的线程
  3. 使用线程池
  4. 计时器
  5. Backgrounworker

c# multithreading

-1
推荐指数
1
解决办法
104
查看次数