小编Jef*_*tes的帖子

C#中的数组切片

你怎么做呢?给定一个字节数组:

byte[] foo = new byte[4096];
Run Code Online (Sandbox Code Playgroud)

如何将数组的前x个字节作为单独的数组?(具体来说,我需要它作为一个IEnumerable<byte>)

这是为了与Sockets合作.我认为最简单的方法是数组切片,类似于Perls语法:

@bar = @foo[0..40];
Run Code Online (Sandbox Code Playgroud)

这会将前41个元素返回到@bar数组中.C#中有些东西我只是缺少,还是还有其他一些我应该做的事情?

LINQ对我来说是一个选项(.NET 3.5),如果这有帮助的话.

c# arrays

214
推荐指数
15
解决办法
23万
查看次数

"死牛肉"是什么意思?

"死牛肉"这个词是什么意思?我是从面试问题中读到的.它与ipv6有关.我想它可能是一个随机的十六进制数字用于例子,如"快速的棕色狐狸跳过懒狗".

我的理解是否正确?或者它有更重要的意义?

ipv6

85
推荐指数
5
解决办法
9万
查看次数

C#属性:如何使用没有私有字段的自定义设置属性?

我想做这个:

public Name
{
    get;
    set
    {
        dosomething();
        ??? = value
    }
}
Run Code Online (Sandbox Code Playgroud)

是否可以使用自动生成的私有字段?
或者我需要以这种方式实现它:

private string name;
public string Name
{
    get
    {
        return name;
    }
    set
    {
        dosomething();
        name = value
    }
}
Run Code Online (Sandbox Code Playgroud)

c# properties

76
推荐指数
5
解决办法
7万
查看次数

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

你如何处理间歇性的错误?

脚本

你有几个错误报告都显示同样的问题.他们都是神秘的,有关问题如何发生的类似故事.您按照步骤操作但不能可靠地重现问题.经过一些调查和网络搜索,你怀疑可能会发生什么,你很确定你可以解决它.

问题

遗憾的是,如果没有可靠的方法来重现原始问题,您无法验证它是否真正解决了问题,而不是完全没有任何影响或加剧和掩盖真正的问题.您可能无法修复它,直到它每次都可重现,但这是一个很大的错误而不修复它会导致您的用户出现很多其他问题.

你如何验证你的变化?

我认为对于任何设计软件的人来说,这是一个非常熟悉的场景,所以我确信有很多方法和最佳实践来解决这样的错误.我们目前正在研究我们项目中的其中一个问题,我花了一些时间来确定问题,但无法证实我的怀疑.一位同事正在测试我的修复,希望"没有崩溃的一天运行"等同于"它是固定的".但是,我更喜欢更可靠的方法,我认为这里有丰富的经验.

debugging validation

33
推荐指数
4
解决办法
7637
查看次数

Silverlight 4/.NET 4调试资源字符串

我最近遇到了一个奇怪的事情.在我公司的某些服务器上打印出异常消息时(是的,坏的,我知道.这是用于调试),实际消息不会显示.相反,它显示外部字符串资源的键,并说"调试资源字符串不可用"

经过一些研究后,我得出以下结论:在发布模式下,Silverlight不会将xap与包含实际错误消息的dll打包以节省空间.

我找到了OLD版本的变通方法,但没有4个版本.似乎有SL 2和3运行时的开发人员版本会自动解决错误,但我找不到SL 4版本.

所以我的问题是:

我需要对SL 4应用程序/计算机做什么,以便在发布模式下看到完整,详细的错误?

silverlight error-handling .net-4.0 silverlight-4.0

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

鼠标滚轮事件(C#)

我无法在主窗体中获取鼠标滚轮事件.

作为演示,我想出了一个简单的例子:

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.panel1.MouseWheel += new MouseEventHandler(panel1_MouseWheel);
        this.panel1.MouseMove += new MouseEventHandler(panel1_MouseWheel);

        Form2 f2 = new Form2();
        f2.Show(this);
    }

    private void panel1_MouseWheel(object sender, MouseEventArgs e)
    {
        if(e.Delta != 0)
        Console.Out.WriteLine(e.Delta);
    }
}

public partial class Form2 : Form
{
    public Form2()
    {
        InitializeComponent();

        this.MouseMove += new MouseEventHandler(Form2_MouseMove);
        this.MouseWheel += new MouseEventHandler(Form2_MouseMove);
    }

    private void Form2_MouseMove(object sender, MouseEventArgs e)
    {
        if(e.Delta != 0)
            Console.Out.WriteLine(e.Delta);
    }
}
Run Code Online (Sandbox Code Playgroud)

我在Form2中得到了鼠标滚轮事件但没有Form1任何想法?

干杯,

詹姆士

c# mousewheel winforms

26
推荐指数
4
解决办法
8万
查看次数

在C#中,如果2个进程正在读取和写入同一个文件,那么避免进程锁定异常的最佳方法是什么?

使用以下文件读取代码:

using (FileStream fileStream = new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.None))
{
    using (TextReader tr = new StreamReader(fileStream))
    {
        string fileContents = tr.ReadToEnd();
    }
}
Run Code Online (Sandbox Code Playgroud)

并且以下文件编写代码:

using (TextWriter tw = new StreamWriter(fileName))
{
    tw.Write(fileContents);
    tw.Close();
}
Run Code Online (Sandbox Code Playgroud)

可以看到以下异常详细信息:

该进程无法访问文件'c:\ temp\myfile.txt',因为它正由另一个进程使用.

避免这种情况的最佳方法是什么?读者是否需要在收到例外后重试,还是有更好的方法?

请注意,阅读器进程使用FileSystemWatcher来了解文件何时更改.

另请注意,在这种情况下,我不是在寻找在两个进程之间共享字符串的替代方法.

c# file-io distributed

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

如何对复杂方法进行单元测试

我有一种方法,给定北角和轴承角度,从8个可能的值(北,东北,东等)返回罗盘点值.我想创建一个单元测试,为这个方法提供合适的覆盖,为North和Bearing提供不同的值,以确保我有足够的覆盖率让我对我的方法有效.

我的原始尝试为-360到360生成了North的所有可能的整数值,并测试了每个Bearing值从-360到360.但是,我的测试代码最终成为我正在测试的代码的另一个实现.这让我想知道最好的测试是什么,这样我的测试代码不仅会包含与我的生产代码相同的错误.

我目前的解决方案是花时间编写一个包含数据点和预期结果的XML文件,我可以在测试期间阅读并使用它来验证方法,但这似乎非常耗时.我不想写一个包含与原始测试包含的相同值范围的文件(这将是很多XML),但我确实想要包含足够的内容以充分测试该方法.

  • 如何在不重新实现方法的情况下测试方法?
  • 如何获得足够的覆盖率,以便对我正在测试的方法有信心,而无需为所有可能的输入和结果提供测试点?

显然,不要过多地关注我的具体示例,因为这适用于许多需要测试的复杂计算和数据范围的情况.

注意:我使用的是Visual Studio和C#,但我相信这个问题与语言无关.

language-agnostic unit-testing

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

Thread.Abort vs Thread.Interrupt

如果我需要取消一个线程一些操作,我什么时候应该使用Thread.AbortVS Thread.Interrupt.我阅读了有关它的文档,但不确定哪个scneario我应该使用两个之间的特定调用.

如果有任何第三种方式,请让我知道它与赞成和利弊.

c# multithreading

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