相关疑难解决方法(0)

你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)

让我们列出你发布优秀和最喜欢的扩展方法的答案.

要求是必须发布完整代码并提供示例和如何使用它的说明.

基于对该主题的高度关注,我在Codeplex上设置了一个名为extensionoverflow的开源项目.

请标记您的答案并接受将代码放入Codeplex项目中.

请发布完整的源代码而不是链接.

Codeplex新闻:

24.08.2010 Codeplex页面现在在这里:http://extensionoverflow.codeplex.com/

11.11.2008 XmlSerialize/XmlDeserialize现在已实现并且已经过单元测试.

11.11.2008仍有更多开发人员的空间.;-) 现在加入!

11.11.2008第三个贡献者加入了ExtensionOverflow,欢迎来到BKristensen

11.11.2008 FormatWith现在已实现且已经过单元测试.

09.11.2008第二个贡献者加入了ExtensionOverflow.欢迎来到chakrit.

09.11.2008我们需要更多开发人员.;-)

09.11.2008 ThrowIfArgumentIsNull现在在Codeplex上实现单元测试.

.net c# extension-methods open-source

478
推荐指数
57
解决办法
12万
查看次数

为什么这不会导致无限循环的事件?

我有一个简单的应用程序,可以反转在另一个文本框中键入的任何文本.问题是,您可以修改任一文本框,更改将(字面上)反映在另一个文本框中.

我写了这段代码,相信它会引起问题.

private void realText_TextChanged(object sender, EventArgs e)
{
    mirrorText.Text = mirror(realText.Text);
}

private void mirrorText_TextChanged(object sender, EventArgs e)
{
    realText.Text = mirror(mirrorText.Text);
}

private string mirror(string text)
{
    return new string(text.Reverse().ToArray()).Replace("\n\r", "\r\n");
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试了它,相信它会导致无限循环(realText变化mirrorText,另一个事件发生,mirrorText变化realText等).但是,除了预期的行为之外什么也没发生

我当然对此感到高兴,我可以把它放在这里.或者我可以吗?

我很确定TextChanged每当Text发生变化时都会被触发.这是事件中某些错误保护的预期行为,还是我很幸运?这个代码在另一台计算机,其他构建设置等上是否会出错?它可以很容易地修复:

private void realText_TextChanged(object sender, EventArgs e)
{
    if (realText.Focused)
    {
        mirrorText.Text = Mirror(realText.Text);
    }
}
Run Code Online (Sandbox Code Playgroud)

我可能会这样做是为了安全,但需要检查一下吗?(我甚至不会问是否推荐它.)

.net c# events winforms textchanged

35
推荐指数
2
解决办法
3358
查看次数

用重音字符反转一个字符串?

所以我看到了Jon的双向飞碟视频,并且有一个代码示例:

应该有一个问题é - 在倒车之后但是我猜它在.net2(恕我直言)上失败了,无论如何它确实对我有效并且我确实看到了正确的反转字符串.

char[] a="Les Misérables".ToCharArray();
Array.Reverse(a);
string n= new string(a);
Console.WriteLine (n); //selbarésiM seL
Run Code Online (Sandbox Code Playgroud)

但我进一步说:

在希伯来语中有"Alef"字符: ?

我可以添加标点符号:( ??我相信它包含2个字符 - 但显示为一个.)

但现在看看会发生什么:

char[] a="Les Mis??rables".ToCharArray();
Array.Reverse(a);
string n= new string(a);
Console.WriteLine (n); //selbar??siM seL
Run Code Online (Sandbox Code Playgroud)

分裂......

我能理解为什么会这样:

Console.WriteLine ("??".Length); //2
Run Code Online (Sandbox Code Playgroud)

所以我想知道在C#中是否存在针对此类问题的解决方法(或者我应该构建自己的机制......)

.net c# unicode .net-4.0

25
推荐指数
2
解决办法
3219
查看次数

属性或索引器'string.this [int]'无法分配给 - 它是只读的

我没有遇到问题 - 我试图做一个简单的动作:

for(i = x.Length-1, j = 0 ; i >= 0 ; i--, j++)
{
    backx[j] = x[i];
}
Run Code Online (Sandbox Code Playgroud)

两者都宣布:

String x;
String backx;
Run Code Online (Sandbox Code Playgroud)

问题是什么 ?它说标题中的错误......如果有问题 - 还有另一种方法吗?结果(名称为'backx'提示)是backx将向后包含字符串X. PS x不为空 - 它包含来自另一个字符串的子字符串.

c# string

7
推荐指数
2
解决办法
4万
查看次数

c#xor功能

我发现这个代码使用or运算符来反转字符串,

public static string ReverseXor(string s)
{

      if (s == null) return null; 
      char[] charArray = s.ToCharArray(); 
      int len = s.Length - 1;

      for (int i = 0; i < len; i++, len--)
      { 
            charArray[i] ^= charArray[len]; 
            charArray[len] ^= charArray[i]; 
            charArray[i] ^= charArray[len]; }

       //some more code
}
Run Code Online (Sandbox Code Playgroud)

问题是我对for循环中发生的事情不了解,有人可以向我解释一下吗?

谢谢.

c# xor

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

更改字符串中单词的位置

我有一个字符串可以说,

string temp1 = "25 10 2012"
Run Code Online (Sandbox Code Playgroud)

但我想要这个,

"2012 10 25"
Run Code Online (Sandbox Code Playgroud)

什么是最好的方式.格式永远都是这样的.

c# .net-3.5

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

为什么我永远不会使用不安全的块来修改字符串?

我有一个字符串,我想以某种方式修改.例如:将其反转或将其翻转.

我发现最快的方法是使用不安全的块和指针.

例如:

        unsafe 
        {
            fixed (char* str = text)
            {
                *str = 'X';
            }
        }
Run Code Online (Sandbox Code Playgroud)

有什么理由我永远不应该这样做吗?

.net c#

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

如何使用LINQ从List <string>中删除重复的组合

我有一个像List的字符串

List<string> MyList = new List<string>
{ 
    "A-B", 
    "B-A", 
    "C-D", 
    "C-E", 
    "D-C",
    "D-E",
    "E-C",
    "E-D",
    "F-G",
    "G-F"
};
Run Code Online (Sandbox Code Playgroud)

我需要从列表中删除重复,即,如果存在"AB"和"BA",那么我只需要保留"AB"(第一个条目)

所以结果就像

"A-B"   
"C-D"
"C-E"   
"D-E"
"F-G"
Run Code Online (Sandbox Code Playgroud)

有没有办法用LINQ做到这一点?

c# linq duplicate-removal

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

c#中的正则表达式

我正在尝试使用正则表达式将像"朝鲜"这样的字符串转换为像"northKorea"这样的字符串 - 有人知道如何在c#中实现这一点吗?

干杯

c# regex

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

任何人都知道更简单的方法来制作Reverse并收取第一个和最后一个字母?

如你所见,我使用arr [0]和arr.last()的起始索引; 但任何人都可以建议另一种方式来做同样的事情更简单?


    public static string F(string s)
    {
        char[] arr = s.ToCharArray();
        Array.Reverse(arr);

        if (s.Length >= 2)
            return new string(arr)[0] + "" + arr.Last();
        else
            return s;
    }
Run Code Online (Sandbox Code Playgroud)

c#

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