小编Rob*_*vis的帖子

为什么在C#中使用简单属性而不是字段?

可能重复:
我应该使用公共属性和私有字段或公共字段来获取数据吗?
C#3.0中自动属性和公共字段之间的区别

人们似乎教条地坚持在田野上使用公共财产,但为什么在简单财产的情况下它如此重要?

怎么

public int Foo { get; set; }
Run Code Online (Sandbox Code Playgroud)

非常不同于

public int Foo;
Run Code Online (Sandbox Code Playgroud)

在我的脑海中,我可以想到两者之间的实际差异:

  • 使用反射访问成员(罕见,最体面的反射算法将解释差异)
  • 第二个条目允许您使用该字段作为ref和out参数的有效参数,这似乎是使用字段版本的一个优势
  • 字段在Remoting中不起作用(可能,我从未使用过远程处理,但我想他们不会)

除了这些非常罕见的情况之外,稍后将Foo更改为计算属性会导致更改0行代码.

c#

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

子进程崩溃时如何禁止Microsoft错误报告对话框

我正在使用System.Diagnostics.Process有时崩溃的对象创建一个进程, Windows会发出"发送错误报告"对话框.我无法控制子进程,但是我已经在崩溃时处理了这个案例,如何阻止对话框弹出?

  Process p = new Process();
  p.StartInfo.FileName = Path.Combine(avokeHome, @"bin\folderstx.exe");
  p.StartInfo.Arguments = "-f" + propertiesFile;
  p.StartInfo.CreateNoWindow = true;
  p.StartInfo.UseShellExecute = false;
  p.StartInfo.RedirectStandardError = true;
  p.StartInfo.RedirectStandardOutput = true;
  p.OutputDataReceived += (sender, e) => { if(!string.IsNullOrEmpty(e.Data)) Console.WriteLine(e.Data); };
  p.ErrorDataReceived += (sender, e) => { if(!string.IsNullOrEmpty(e.Data)) Console.WriteLine(e.Data); };
  p.EnableRaisingEvents = true;
  p.Exited += (sender, e) => { Console.WriteLine("Exited"); };
  p.Start();
  p.BeginErrorReadLine();
  p.BeginOutputReadLine();
Run Code Online (Sandbox Code Playgroud)

.net c#

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

是否可以通过C#中的反射检索文件信息?

假设你在C#中有一个MethodInfo或任何其他的MemberInfo子类.是否可以检索声明它的文件的名称以及声明开始处的行号?此信息必须存在于调试模式元数据中的某处,因为创建StackTrace实例将为您提供该信息.我应该在System.Diagnostics而不是System.Reflection中查找?

c# reflection

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

Process.HasExited可以抛出InvalidOperationException的原因是什么?

我看到一个System.Diagnositics.Process.HasExited方法抛出一个InvalidOperationException,但是消息文本属性对它抛出的原因并不十分有用.在什么条件下抛出此异常?

.net c#

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

如何将G.726 ADPCM信号转换为PCM信号?

我通常会查看SoX或Window的内置音频库,但看起来它们都没有G.726编解码器.

所以我有一个字节序列,我知道编码为G.726,虽然比特率和它是mu-law还是A-law目前还不知道(实验将决定那些参数),我需要将它们解码为普通的PCM信号.

所以我从ITU-T(ITU-T G.191建议书)下载了参考实现,但我对如何使用该G726_decode功能感到困惑.根据文档inp_bufout_buf需要具有相同的长度smpno,两个缓冲区都是16位缓冲区.在我看来,这似乎是一个缺失的步骤; 否则,使用G.726无法完成压缩.根据G.726上的维基百科页面,样本大小取决于比特率(从2到5位).我本来应该自己做减压样品吗?因此,如果我假设最大压缩(2位采样),则每个字节将产生4个采样.

例:

char b = /* read the code from input */
short inp[4], output[4];
inp[0] = b & 0x0003;
inp[1] = b & 0x000C >> 2;
inp[2] = (b & 0x0030) >> 4;
inp[3] = (b & 0x00C0) >> 6;
G726_state state;
memset(&state, 0, sizeof(G726_state));
G726_decode(inp, output, 4, "u", 2, 1, &state);
/* ouput now contains 4 PCM samples */
Run Code Online (Sandbox Code Playgroud)

还是我完全错过了什么?

c audio transcoding

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

MD5 computeHash(Stream)和computeHash(byte [])之间有什么区别

这对于我见过的一些人来说是一个问题,但大多数人都是关于文本问题的.这是纯粹的二元问题.这是一些示例代码.

MD5 md5Bytes  = MD5.Create() ;
MD5 md5Stream = MD5.Create() ;
var random    = new Random();

var bytes     = new byte[ 4096*2 ] ;
random.NextBytes(bytes);    
var stream = new MemoryStream(bytes) ;

stream.Position = 0 ;

var bytesHash   = md5Bytes.ComputeHash(bytes);
var streamHash  = md5Stream.ComputeHash(stream);

for (int i = 0; i < bytesHash.Length; ++i)
  if ( bytes[i] != streamHash[i] )
  {
    Console.WriteLine("Different content " + i);
    break;
  }
Run Code Online (Sandbox Code Playgroud)

当我跑这个时,令我惊讶的是我得到了不同的结果.有人可以解释这里发生的事情,不应该是字节数组的MD5给出与相同内容流相同的结果吗?

.net c# hash md5

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

标签 统计

c# ×5

.net ×3

audio ×1

c ×1

hash ×1

md5 ×1

reflection ×1

transcoding ×1