Tag: C#的

如何强制垃圾收集器运行?

面试官今天问我这个问题有答案吗?

用math运算符评估C#string

有没有简单的方法来评估像"(4+8)*2"这样的string,所以你会得到24的int值? 还是有很多工作需要做到这一点…?

从DLL导出一个C ++类

我的大部分C / C ++开发都涉及单片模块文件,绝对没有任何类,所以通常当我需要使用可访问的函数创build一个DLL时 ,我只需使用标准的__declspec(dllexport)指令导出它们。 然后通过LoadLibrary()或者在编译时使用头文件和lib文件来dynamic访问它们。 当你想要导出整个类(以及所有的公共方法和属性)时,你如何做到这一点? 是否有可能在运行时dynamic加载该类,如果是这样,如何? 你怎么用一个头文件和lib来编译链接?

WPF用户控件中的数据绑定

我正在为几个窗口共享的一系列控件创build一个UserControl。 其中一个控件是一个标签,用“协议号码”来表示一些其他进程的stream程。 我试图提供这个标签的DataBinding,所以窗口会自动反映进程的状态,因为协议号variables的变化。 这是用户控件XAML: <UserControl Name="MainOptionsPanel" x:Class="ExperienceMainControls.MainControls" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" DataContext="{Binding RelativeSource={RelativeSource Self}}" > <Label Height="Auto" Name="numberLabel">Protocol:</Label> <Label Content="{Binding Path=ProtocolNumber}" Name="protocolNumberLabel"/> (…) </UserControl> 这是代码隐藏: public partial class MainControls { public MainControls() { InitializeComponent(); } public int ProtocolNumber { get { return (int)GetValue(ProtocolNumberProperty); } set { SetValue(ProtocolNumberProperty, value); } } public static DependencyProperty ProtocolNumberProperty = DependencyProperty.Register("ProtocolNumber", typeof(int), […]

“匿名结构”是标准吗? 而且,真的,他们是什么?

MSDN 认为匿名结构在C ++中是非标准的: Microsoft C扩展允许您在另一个结构中声明一个结构variables,而不必为其命名。 这些嵌套结构被称为匿名结构。 C ++不允许匿名结构。 您可以像访问包含结构中的成员一样访问匿名结构的成员。 @ K-ballo同意 。 我被告知,这个function不一定是创build一个未命名的结构相同,但我看不出标准措辞的区别。 C ++ 11说: [C++11: 9/1] : [..]一个class-specifier,它的class-head省略了class-head-name,定义了一个未命名的类。 并为缺less名称的types定义提供了完整的语法结构。 C ++ 03缺less这种明确的措辞,但同样表明types定义中的identifier是可选的,并且引用9.4.2/5和3.5/4 “未命名类”。 那么MSDN是错的,而这些东西都是完全标准的? 或者在“未命名的结构体/类”之间缺less一些微妙的东西,当它们被用作阻止它们被这个C ++ 03 / C ++ 11function所覆盖的成员时,它们是相同的? 我是否缺less“未命名结构”和“匿名结构”之间的一些根本区别? 他们看起来像我的同义词。

我怎样才能调用被重载的虚拟方法的“基础实现”?

给定下面的代码,有没有办法可以调用类A的方法X的版本? class A { virtual void X() { Console.WriteLine("x"); } } class B : A { override void X() { Console.WriteLine("y"); } } class Program { static void Main() { A b = new B(); // Call AX somehow, not BX.. }

将基types转换为派生types的一种方法

我不确定这是否是一件奇怪的事情,或者如果它是一些代码味道…但我想知道是否有一种方法(某种types的oop模式会很好)来“投”基types转换为其派生types的forms。 我知道这是没有意义的,因为派生types将具有父类不提供的附加function,这在本身并不是根本上合理的。 但有没有办法做到这一点? 这里是一个代码示例,以便我可以更好地解释我所要求的。 public class SomeBaseClass { public string GetBaseClassName {get;set;} public bool BooleanEvaluator {get;set;} } public class SomeDerivedClass : SomeBaseClass { public void Insert(SqlConnection connection) { //…random connection stuff cmd.Parameters["IsItTrue"].Value = this.BooleanEvalutar; //… } } public static void Main(object[] args) { SomeBaseClass baseClass = new SomeBaseClass(); SomeDerivedClass derClass = (SomeDerivedClass)baseClass; derClass.Insert(new sqlConnection()); } […]

单字符意味着什么?

从这里的答案。 class wrap { public: operator obj() const & { … } //Copy from me. operator obj() && { … } //Move from me. private: obj data_; }; 我知道&&表示当对象是右值引用时,成员将被调用。 但是,单个&符号是什么意思? 和没有&符号有什么不同?

错误LNK2019:无法parsing的外部符号_main在函数___tmainCRTStartup中引用

我不知道什么是错的..我找不到错误在哪里,注释掉实现也不能解决错误。 头文件 #ifndef MAIN_SAVITCH_SEQUENCE_H #define MAIN_SAVITCH_SEQUENCE_H #include <cstdlib> // Provides size_t namespace main_savitch_3 { class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef std::size_t size_type; static const size_type CAPACITY = 30; // CONSTRUCTOR sequence( ); // MODIFICATION MEMBER FUNCTIONS void start( ); void advance( ); void insert(const value_type& entry); void attach(const […]

迭代vector,去掉某些项目

我有一个std ::向量m_vPaths; 我将迭代这个向量,并随时调用:: DeleteFile(strPath)。 如果我成功删除了文件,我会从vector中删除它。 我的问题是我可以绕过不得不使用两个向量? 有不同的数据结构可能更适合我需要做的吗? 例如:使用迭代器几乎做我想要的,但问题是一旦你使用迭代器擦除,所有迭代器变得无效。 std::vector<std::string> iter = m_vPaths.begin(); for( ; iter != m_vPaths.end(); iter++) { std::string strPath = *iter; if(::DeleteFile(strPath.c_str())) { m_vPaths.erase(iter); //Now my interators are invalid because I used erase, //but I want to continue deleteing the files remaining in my vector. } } 我可以使用两个向量,我将不再有问题,但有没有更好,更有效的方法来做我想做的事情? 顺便说一句,因为目前还不清楚,m_vPaths是这样宣布(在我的class级): std::vector<std::string> m_vPaths;