Tag: C#的

返回声明应该在锁内还是外?

我只是意识到,在我的代码中的一些地方,我有锁内部的返回语句,有时在外面。 哪一个是最好的? 1) void example() { lock (mutex) { //… } return myData; } 2) void example() { lock (mutex) { //… return myData; } } 我应该使用哪一个?

我如何获得活动的屏幕尺寸?

我正在寻找的是相当于System.Windows.SystemParameters.WorkArea的窗口当前所在的监视器。 澄清:有问题的窗口是WPF ,而不是WinForm 。

在.NET中对于无效或意外的参数应该抛出什么exception?

什么types的exception应该抛出无效或意外的参数在.NET中? 我什么时候select一个而不是另一个? 跟进: 如果你有一个函数需要一个对应于一个月份的整数,并且你通过了'42',你会使用哪个exception? 即使它不是一个集合,它会落入“超出范围”范畴吗?

在C#中,一个类可以从另一个类和一个接口inheritance吗?

我想知道一个类是否可以从类和接口inheritance。 下面的示例代码不起作用,但我认为它传达了我想要做的事情。 我想这样做的原因是因为在我的公司我们制造USB,串行,以太网等设备。 我正在尝试开发一个通用的组件/接口,用于为我们所有的设备编写程序,这将有助于保持所有应用程序的常见事物(如连接,断开连接,获取固件)。 要添加到这个问题:如果GenericDevice是在不同的项目,我可以把IOurDevices接口在该项目然后使USBDevice类实现接口,如果我添加一个引用到第一个项目? 因为只想引用一个项目,然后根据设备的不同而实现不同的接口。 class GenericDevice { private string _connectionState; public connectionState { get{return _connectionState; } set{ _connectionState = value;} } } interface IOurDevices { void connectToDevice(); void DisconnectDevice(); void GetFirmwareVersion(); } class USBDevice : IOurDevices : GenericDevice { //here I would define the methods in the interface //like this… void connectToDevice() { […]

为什么Console.Writeline,Console.Write不能在Visual Studio Express中工作?

我只是打开一个控制台应用程序,然后input Console.WriteLine("Test"); 但是输出窗口不显示这个。 我用Ctrl + W,O进入输出窗口 但是,当我运行我的程序时,什么也没有显示出来,我是坚果还是在visual studio 2010 express中不支持?

你如何连接C#中的列表?

如果我有: List<string> myList1; List<string> myList2; myList1 = getMeAList(); // Checked myList1, it contains 4 strings myList2 = getMeAnotherList(); // Checked myList2, it contains 6 strings myList1.Concat(myList2); // Checked mylist1, it contains 4 strings… why? 我在Visual Studio 2008中运行类似于此的代码,并在每次执行后设置断点。 myList1 = getMeAList(); , myList1包含四个string,然后按下加号button以确保它们不是全部空值。 myList2 = getMeAnotherList(); , myList2包含六个string,我检查,以确保它们不是null … myList1.Concat(myList2); myList1只包含四个string。 这是为什么?

检查一个types的实例

用这个来检查c是否是TForm一个实例。 c.GetType().Name.CompareTo("TForm") == 0 除了使用string作为参数CompareTo()之外,还有更安全的方法吗?

如何避免if / else如果将一个标题分为8个方向?

我有以下代码: if (this->_car.getAbsoluteAngle() <= 30 || this->_car.getAbsoluteAngle() >= 330) this->_car.edir = Car::EDirection::RIGHT; else if (this->_car.getAbsoluteAngle() > 30 && this->_car.getAbsoluteAngle() <= 60) this->_car.edir = Car::EDirection::UP_RIGHT; else if (this->_car.getAbsoluteAngle() > 60 && this->_car.getAbsoluteAngle() <= 120) this->_car.edir = Car::EDirection::UP; else if (this->_car.getAbsoluteAngle() > 120 && this->_car.getAbsoluteAngle() <= 150) this->_car.edir = Car::EDirection::UP_LEFT; else if (this->_car.getAbsoluteAngle() > 150 && this->_car.getAbsoluteAngle() […]

为什么链表使用指针而不是将节点存储在节点内部

我已经广泛地在Java中使用链表,但是我对C ++很陌生。 我正在使用这个在项目中给我的节点类 class Node { public: Node(int data); int m_data; Node *m_next; }; 但是我有一个问题没有得到很好的回答。 为什么有必要使用 Node *m_next; 指向列表中的下一个节点而不是 Node m_next; 我明白,使用指针版本更好; 我不会去争论事实,但是我不知道为什么更好。 关于指针如何更好地分配内存,我得到了一个不太明确的答案,我想知道这里有没有人能帮助我更好地理解。

缺省构造函数和析构函数的“= default”与“{}”有什么不同?

我最初发布这个只是关于析构函数的问题,但现在我添加了默认构造函数的考虑。 这是原来的问题: 如果我想让我的类是一个虚拟的析构函数,但是与编译器生成的相同,我可以使用=default : class Widget { public: virtual ~Widget() = default; }; 但是,似乎我可以通过使用空白定义来减lessinput来获得相同的效果: class Widget { public: virtual ~Widget() {} }; 这两个定义的行为有什么不同? 基于针对这个问题发布的回复,默认构造函数的情况看起来类似。 鉴于析构函数在“ =default ”和“ {} ”之间的含义几乎没有区别,这些选项对于默认构造函数在意义上几乎没有区别? 也就是说,假设我想创build一个types的对象将被创build和销毁,我为什么要说 Widget() = default; 代替 Widget() {} ? 我很抱歉,如果扩大这个问题后,其原来的发布是违反了一些SO规则。 为默认的构造函数发布几乎相同的问题让我觉得不那么理想。