小编Ste*_*eve的帖子

将对象转换为int的更好方法

这可能是微不足道的,但我想不出更好的方法.我有一个COM对象,它返回一个变体,它变成了C#中的一个对象.我能把它变成int的唯一方法是

int test = int.Parse(string.Format("{0}", myobject))
Run Code Online (Sandbox Code Playgroud)

有更清洁的方法吗?谢谢

c# interop

164
推荐指数
4
解决办法
28万
查看次数

C#JIT编译和.NET

我对JIT编译器的工作原理有点困惑.我知道C#编译成IL.第一次运行它是JIT'd.这是否涉及将其翻译成本机代码?.NET运行时(作为虚拟机吗?)是否与JIT代码交互?我知道这很天真,但我真的很困惑.我的印象一直是.NET运行时没有解释程序集,但我不了解交互的细节.

c# jit

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

检查KeyQaluePair是否与LINQ的FirstOrDefault一起存在

我有一本类型的字典

Dictionary<Guid,int>
Run Code Online (Sandbox Code Playgroud)

我想返回使用条件的第一个实例

var available = m_AvailableDict.FirstOrDefault(p => p.Value == 0)
Run Code Online (Sandbox Code Playgroud)

但是,如何检查我是否真的回到了KeyValuePair?我似乎无法使用!=或==在没有编译器错误的情况下检查默认值(KeyValuePair).有一个类似的线程在这里并不十分似乎有一个解决方案.我实际上能够通过获取密钥并检查Guid的默认值来解决我的特定问题,但我很好奇是否有一个使用keyvaluepair执行此操作的好方法.谢谢

c# linq null

71
推荐指数
4
解决办法
6万
查看次数

何时使用属性而不是函数

这可能是个人偏好的问题,但是什么时候在代码中使用属性而不是函数

例如,我可以说得到一个错误日志

string GetErrorLog()
{
      return m_ErrorLog;
}
Run Code Online (Sandbox Code Playgroud)

或者我可以

string ErrorLog
{
     get { return m_ErrorLog; }
}
Run Code Online (Sandbox Code Playgroud)

你如何决定使用哪一个?我的用法似乎不一致,我正在寻找一个好的一般经验法则.谢谢.

c# coding-style properties

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

C++ - 返回代码异常的参数

我正在讨论在新的C++项目中采用哪种方式.由于以下原因,我赞成对返回代码的异常(仅限特殊情况) -

  1. 构造函数无法提供返回代码
  2. 将故障路径(应该非常罕见)与更清晰的逻辑代码分离
  3. 在非特殊情况下更快(不检查是否/否则数十万次)
  4. 如果有人搞砸了返回代码设置(忘记返回FAIL),可能需要很长时间才能追踪.
  5. 来自错误中包含的消息的更好信息.(有人向我指出,返回枚举可以对错误代码执行相同的操作)
  6. 从Jare​​d Par不可能忽略没有代码专门设计来处理它

这些是我从思考它和谷歌搜索中得出的要点.我必须承认,在过去的几年中,我倾向于使用C#工作的例外情况.请在退货代码上发布使用例外的进一步原因.对于那些喜欢返回代码的人,我也愿意倾听你的推理.谢谢

c++ exception

29
推荐指数
4
解决办法
1万
查看次数

C++弄清楚是否附加了调试器

我使用stackwalk64使用最新的symchk.exe和dbghlp.dll在visual studio 2008中为C++生成堆栈跟踪.当我运行独立的exe时,这很好用.但是,当附加调试器时,我死了视觉工作室.我以前有一个解决方法,我将所有的system32符号下载到磁盘,这很好,但最近的更新似乎打破了我的解决方法,即使我更新了符号.理想情况下,我想确定是否附加了visual studio调试器(它只会是VS调试器),因此在这种情况下我可以关闭堆栈跟踪.谢谢你的帮助.

c++ debugging deadlock stack-trace

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

无法将XmlReader加载到XDocument中

我试图加载XmlReader到一个XDocument更容易操纵.XML格式正确且有效(我仔细检查过).当我尝试加载它时XDocument,我得到了一个InvalidOperationException

此操作后,XmlReader状态应为EndOfFile.

加载它的代码是

public void ReadXml(System.Xml.XmlReader reader)
{
    var doc = XDocument.Load(reader);
}
Run Code Online (Sandbox Code Playgroud)

我已经包含了导致问题的XML示例.我可以顺利地序列化和反序列化这个类,但不加载它.有任何想法吗?

<?xml version="1.0" encoding="utf-8"?>
<ForestView xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Forest>
 <TreeNodeView>
  <Level>Master</Level>
  <ID>39476b1f-e2f8-4d76-b82e-a5166899ad43</ID>
  <Name>Black Mesa</Name>
  <ServerIPAddress>127.0.0.1</ServerIPAddress>
  <ServerPortNumber>8000</ServerPortNumber>
  <ClientIPAddress>NA</ClientIPAddress>
  <ClientPortNumber>4000</ClientPortNumber>
  <Nodes>
    <Level>Server</Level>
    <NodeID>062c3e03-235d-4d7d-9b60-c6228c9cc89e</NodeID>
    <Name />
    <ServerIPAddress>127.0.0.1</ServerIPAddress>
    <ServerPortNumber>5000</ServerPortNumber>
    <ClientIPAddress>127.0.0.1</ClientIPAddress>
    <ClientPortNumber>4000</ClientPortNumber>
  </Nodes>
  <Nodes>
    <Level>Intermediate</Level>
    <NodeID>9bafdc9e-771e-42cf-8f03-e7e75a67a6d1</NodeID>
    <Name>Jen</Name>
    <ServerIPAddress>127.0.0.1</ServerIPAddress>
    <ServerPortNumber>8001</ServerPortNumber>
    <ClientIPAddress>127.0.0.1</ClientIPAddress>
    <ClientPortNumber>8000</ClientPortNumber>
    <Nodes>
      <Level>Terminal</Level>
      <NodeID>72509141-0ab8-45c1-8042-30afb233b4a8</NodeID>
      <Name>Mary</Name>
      <ServerIPAddress>127.0.0.1</ServerIPAddress>
      <ServerPortNumber>0</ServerPortNumber>
      <ClientIPAddress>127.0.0.1</ClientIPAddress>
      <ClientPortNumber>8001</ClientPortNumber>
    </Nodes>
   </Nodes>
  </TreeNodeView>
 </Forest>
</ForestView>
Run Code Online (Sandbox Code Playgroud)

c# linq-to-xml

15
推荐指数
2
解决办法
7616
查看次数

从const成员函数调用非const成员函数

我想知道是否可以从const成员函数调用非const成员函数.在下面的示例中,First给出了编译器错误.我明白为什么它会出错,我想知道是否有办法解决它.

class Foo
{
   const int& First() const
   {
         return Second();
   }

   int& Second()
   {
        return m_bar;
   }

   int m_bar;
}
Run Code Online (Sandbox Code Playgroud)

我真的不想讨论这样做的智慧,我很好奇它是否可能.

c++ const

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

C++和C#在数学上的性能差异

我想在此前言,我不是要开始一场战斗.我想知道是否有人有任何好的资源比较C++和C#的数学密集代码?我的直觉是C#应该明显变慢,但我真的没有证据表明这种感觉.我想知道这里有没有人参加过一项研究或者自己测试过这个问题?我打算自己运行一些测试,但是想知道是否有人以严格的方式完成了这项测试(google显示的很少).谢谢.

编辑:对于密集,我的意思是在紧密循环中发生了很多sin/cos/exp

c# c++ performance

14
推荐指数
6
解决办法
7321
查看次数

为什么我不能在即时窗口中索引std :: vector?

所以,我有一个向量

 std::vector<std::string> lines. 
Run Code Online (Sandbox Code Playgroud)

我填写这个向量,可以像访问它一样

 std::string temp = lines[0];
Run Code Online (Sandbox Code Playgroud)

但是,在即时窗口中,两者都有

 lines[0] - error:overloaded operator not found
Run Code Online (Sandbox Code Playgroud)

 lines.at(0) - error:symbol is ambiguous
Run Code Online (Sandbox Code Playgroud)

根本不工作.使用c ++的即时窗口有一个技巧.我主要是来自C#背景,一切都很好(我在立即窗口中有智能感知).我并不认为C++会很棒,但我认为它可以用于除了int之外的东西.谁能告诉我我做错了什么?谢谢.

编辑:我应该清楚,在即时窗口中没有任何实际工作,这只是一个简化的例子

编辑:我在调试模式

c++ immediate-window stdvector visual-studio

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