小编Bob*_*yan的帖子

如何从控制台应用程序访问Application对象?

我从我的C#Windows表单应用程序中获取了一些代码,该应用程序使用Application对象获取启动路径并尝试在控制台应用程序中使用它.当我这样做时,编译器显示以下错误消息 - "当前上下文中不存在名称'Applicaiton'.做了一些研究并发现Application对象在System.Windows.Forms命名空间中.所以,我添加了一个参考这个没有明显的效果.然后,尝试使用System.Windows.Forms添加到文件的顶部并得到一个新的错误消息 - "类型或命名空间名称'Windows'在命名空间'System'中不存在(你是否错过了程序集引用?)."有人能说明如何从控制台应用程序访问Application对象吗?

c# console-application

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

C#中相等的最小代码

在这篇文章中,Eric Lippert在第9点建议C#"过于平等".他指出,有9或10种不同的方法或运算符可以重载以提供对象相等性.

我的第一个问题是 - 如果重写了Object.Equals(object)方法,编译器是否可以调用任何其他相等运算符,如==,!=,<=等,而无需明确执行此操作的代码?

在C++中,这种行为有先例.编译器可以在需要生成临时变量的某些位置调用复制构造函数.我至少95%确定这不会发生在C#中,但它实际上取决于编译器的构造方式以及边缘情况.

第二个问题是 - 如果编译器永远不会间接调用任何相等运算符,那么小型,中型甚至大型项目是否可以指定只使用Object.Equals(object)方法和IEquatable进行如果类型将用于排序或在确定对象的等级时需要使用其他时间,则使用等式测试和IComparable吗?换句话说 - 如果项目中的每个人都同意他们不会被使用并因此是不必要的,那么可以避免定义其他相等运算符吗?

假设代码仅在项目中使用,不会导出供第三方使用.

c# equality equals

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

如何使用具有二维数组的LINQ

我有一个二维字节数组,看起来像这样:

0 0 0 0 1

1 1 1 1 0

0 0 1 1 1

1 0 1 0 1

数组中的每个值只能是0或1.上面的简化示例显示了4行,每行有5列.我试图弄清楚如何使用LINQ将索引返回到具有最大数量1s的行,在上面的示例中应该返回1.

以下非LINQ C#代码解决了这个问题:

static int GetMaxIndex(byte[,] TwoDArray)
{
   // This method finds the row with the greatest number of 1s set.
   //
   int NumRows = TwoDArray.GetLength(0);
   int NumCols = TwoDArray.GetLength(1);
   int RowCount, MaxRowCount = 0, MaxRowIndex = 0;
   //
   for (int LoopR = 0; LoopR < NumRows; LoopR++)
   {
      RowCount = 0;
      for (int LoopC = 0; LoopC < …
Run Code Online (Sandbox Code Playgroud)

c# linq arrays plinq

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

是否有任何集合类或特殊数据类型支持.NET 3.5中超过2 ^ 31项?

我目前正在使用VS 2008 64位版本,带有SP1的3.5框架.但是,像List这样的集合类似乎可以包含2 ^ 31(或int的最大值)元素的限制.

有谁知道是否有任何真正的64位集合可以处理容器中超过2 ^ 31个元素?如果不是VS 2008,那么VS 2010怎么样?那里有任何第三方收藏品吗?

c# collections 64-bit

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

如何使用交替背景突出显示WPF Listview控件中的选定行

我正在使用VS 2008和3.5的.NET框架.我已经设置了我的代码来替换WPF ListView控件中的背景行.使用的一种颜色是白色.使用的另一种颜色是浅绿色.单击白线时,它会以浅蓝色突出显示该行.单击绿线时,没有突出显示,背景颜色保持浅绿色.我已经尝试在XAML中指定HighlightBrushKey和ControlBrushKey,但它们没有任何效果.点击绿线时,我需要做什么才能突出显示绿线?

这是XAML代码:

<!-- Define the resource for the alternating background background used in the ListView objects.  -->
<StackPanel.Resources>
   <Style x:Key="alternatingListViewItemStyle" TargetType="{x:Type ListViewItem}">
      <Style.Resources>
         <!-- Foreground for Selected ListViewItem -->
         <!-- <SolidColorBrush x:Key="{x:Static SystemColors.HighlightTextBrushKey}" Color="Black"/> -->
         <!-- Background for Selected ListViewItem -->
         <SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Green"/>
         <SolidColorBrush x:Key="{x:Static SystemColors.ControlBrushKey}" Color="Brown"/>
      </Style.Resources>
      <Style.Triggers>
         <!-- Tried setting the background property here, but this did not work.
         <DataTrigger Binding="{Binding Path=RowSelected}" Value="True">
            <Setter Property="Background" Value="Gainsboro"  />
            <Setter Property="FontWeight" Value="Bold" />
         </DataTrigger> -->
         <!-- …
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml listview visual-studio-2008

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

Perl对数组的引用数组进行排序

我对Perl比较陌生.我有一个名为$ TransRef的数组的引用,该数组包含对数组的引用.我的目标是编写一个以$ TransRef争论为唯一参数的子,用第二个元素(一个字符串)对底层数组的引用进行排序,并将输出设置回$ TransRef引用.有人可以说明如何在Perl中完成这项工作吗?

以下是一些生成$ TransRef的代码.它还没有经过测试,可能有一些错误:

# Parse the data and move it into the Transactions container.
for ($Loop = 0; $Loop < 5; $Loop++)
{
   $Line = $LinesInFile[$Loop];
   # Create an array called Fields to hold each field in $Line.
   @Fields = split /$Delimitor/, $Line;  
   $TransID = $Fields[2];
   # Save a ref to the fields array in the transaction list.
   $FieldsRef = \@Fields;
   ValidateData($FieldsRef);
   $$TransRef[$Loop] = $FieldsRef;
}
SortByCustID($TransRef);

sub SortByCustID()
{
   # This sub sorts the arrays in …
Run Code Online (Sandbox Code Playgroud)

sorting perl reference

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

析构函数是否删除了正确的实例

我在具有最新更新的 Visual Studio 2022 社区版中使用 Visual C++。在下面的 C++ 代码中,main 创建了 ShowBug 的实例并将其分配给变量 sb。下一行创建 ShowBug 的第二个实例并将其分配给 sb。

在第二行完成之前,它调用析构函数。但是,它不会破坏第一个实例,这正是我认为它会做的,而是破坏了新创建的第二个实例。如果您觉得难以置信,请亲自尝试一下。

那么,我是否在这里遗漏了一些东西(即使用相同的变量来分配新实例是一种糟糕的编程习惯?),或者编译器是否以某种方式做了正确的事情?或者,这是一个编译器错误吗?

// ShowBug.h:

using namespace std;
#include <iostream>
#include <string>

class ShowBug
{
   // This class is used to show that the destructor seems to be called for the wrong instance.
   //
   string S;
   int *pArray;
public:
   inline ShowBug(const string &s) : S(s)
   {
   }

   inline ~ShowBug()
   {
      std::cout << "Deleting " + S;
   }
};

int main()
{
   ShowBug sb = ShowBug("First …
Run Code Online (Sandbox Code Playgroud)

c++ destructor visual-c++

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