小编Hen*_*rik的帖子

在catch区块返回?

在catch块中有一个return语句是错误的吗?有哪些替代方案?
即:

public bool SomeFunction()
{
    try
    {
        //somecode
        return true;
    }
    catch(Exception ex)
    {
        MessageBox.Show(ex.message);
        return false;
    }

}
Run Code Online (Sandbox Code Playgroud)

.net c# exception-handling

58
推荐指数
5
解决办法
4万
查看次数

忽略属性上的二进制序列化

我有一个普通的C#POCO.在班级,我正在装饰对象[Serializable()].

也就是说,我Sum()在其中一个属性上使用Linq ,并且在序列化时收到错误.如果可能的话,我想简单地忽略这个属性.但是,[XmlIgnore()]它仅用于Xml序列化,而不是二进制.任何想法或想法?

代码是这样的,我想忽略ValueTotal:

[Serializable()]
public class Foo
{
  public IList<Number> Nums { get; set; }

  public long ValueTotal
  {
    get { return Nums.Sum(x => x.value); }
  }
}
Run Code Online (Sandbox Code Playgroud)

c# serialization

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

如何建立一个右关联中缀运算符?

我有一个关联操作>>.问题是它的成本线性地取决于其左操作数的大小.所以由一系列类似的n应用程序形成的表达式>>

a >> a >> a >> a >> a >> ... >> a
Run Code Online (Sandbox Code Playgroud)

它具有二次成本n,因为默认中缀运算符是左关联的.如何使它成为右关联,以便这样的表达式的成本保持线性n

scala associative infix-notation

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

转让所有权后如何摆脱CA2000警告?

以下代码生成两个CA2000警告(除此之外,但这不是重点).

public sealed class Item: IDisposable
{
    public void Dispose() {}
}

public sealed class ItemContainer
{
    public void Add(Item item)
    {
    }
}

public sealed class Test: IDisposable
{
    private ICollection<Item> itemCollection;
    private ItemContainer itemContainer;

    private void Add(Item item)
    {
        itemCollection.Add(item);
    }

    public void Initialize()
    {
        var item1 = new Item(); // no warning
        itemCollection.Add(item1);

        var item2 = new Item(); // CA2000: call Dispose on object item2
        Add(item2);

        var item3 = new Item(); // CA2000: call Dispose on object …
Run Code Online (Sandbox Code Playgroud)

c# code-analysis visual-studio-2010

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

释放临时COM对象

使用COM对象考虑以下C#代码.


MyComObject o = new MyComObject;
try
{
 var baz = o.Foo.Bar.Baz;
 try
 { 
  // do something with baz
 }
 finally
 {
  Marshal.ReleaseComObject(baz);
 }
}
finally
{
 Marshal.ReleaseComObject(o);
}

这将释放COM对象obaz,而不是临时对象returnd的o.Fooo.Foo.Bar.当这些对象拥有大量非托管内存或其他资源时,这可能会导致问题.

一个明显但丑陋的解决方案是,使用try-finally和更加混乱代码Marshal.ReleaseComObject.请参阅 C#+ COM Interop,确定性版本

作为一种解决方法,我创建了一个帮助类


class TemporaryComObjects: IDisposable
{
 public C T<C>(C comObject)
 {
  m_objects.Add(comObject);
  return comObject;
 }
 public void Dispose()
 {
  foreach (object o in m_objects)
   Marshal.ReleaseComObject(o);
 }
}

用法:


using (TemporaryComObjects t = new TemporaryComObjects())
{ …
Run Code Online (Sandbox Code Playgroud)

.net c# com interop com-interop

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

混淆装配和反思

我想通过Dotfuscator模糊我的汇编文件(*.dll,*.exe).我的问题是,如果我这样做,我仍然可以使用原始名称(我的意思是混淆之前的名称)并使用System.Reflection方法来处理这些程序集中的类和类型吗?

如果您需要更多细节,请告诉我

c# obfuscation dotfuscator

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

事件处理(隐藏表单时检测)

通常情况下,我非常善于在没有指导的情况下计算和研究问题,但是我遇到了一个问题.我正在尝试使用C#创建一个"事件"(我以前没有做过)我查找的所有东西都与我需要的东西无关.

当form2被隐藏时,我试图在我的主窗体上调用一个类.我发现了一些应该检查form2是否关闭的代码 - 要么我没有正确地将它集成到我的代码中,要么关闭与隐藏不同.

所以只是为了澄清我想要像这样运行程序:

  • Form1运行
  • 单击Form1上的设置按钮,打开Form2
  • Form2打开,可以更改设置
  • 单击Form2上的"确定"按钮(这是我希望Form1实现Form2隐藏的地方
  • 隐藏表单并运行名为Refresh的类,刷新按钮名称和URL

c# events event-handling winforms

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

有没有聊天机器人框架?

我正在尝试创建一个类似于ELIZA的程序.我倾向于用一般语言实现这个项目,比如ruby,java,C++.是否有一些框架(开源将是伟大的)可用于任何这些语言?

c++ ruby java chat bots

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

减去两个4x4矩阵 - 这可能吗?

我有两个4x4 OPENGL矩阵 -

  • 第一个矩阵保持对象在第0帧的旋转和位置.

  • 第二矩阵保持物体在框架X处的旋转和位置;

我想检索一个对象在第0帧和第X帧之间的移动偏移,这是否足够(可能)如果我只减去它们?

CMatrix4x4 offsetMatrix = matrixAtFrameX - matrixAtFrame0;
Run Code Online (Sandbox Code Playgroud)

我正在做的是每帧导出骨骼变换矩阵,其中该矩阵是动画的帧0和帧X之间的变换的偏移.

  • 我可以减去两个矩阵吗?

  • 结果是什么?

opengl math matrix

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

VS中的奇怪警告

我有很多像这样的警告,我不知道他们的意思.

有谁知道这是什么?

"至少有一个'IOleWindow.GetWindow'的参数不能由运行时编组器封送.因此,这些参数将作为指针传递,并且可能需要操作不安全的代码."

我还应该指出它与"c:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets"有关

.net c# warnings com-interop

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